23 General utilities library [utilities]
23.15 Metaprogramming and type traits [meta]
namespace std {
template <class T, T v>
struct integral_constant {
static constexpr T value = v;
using value_type = T;
using type = integral_constant<T, v>;
constexpr operator value_type() const noexcept { return value; }
constexpr value_type operator()() const noexcept { return value; }
};
}
The class template
integral_constant,
alias template
bool_constant, and
its associated
typedef-names
true_type and
false_type
are used as base classes to define
the interface for various type traits
.