template< class T, T v >
struct integral_constant;
std::integral_constant
wraps a static constant of specified type. It is the base class for the C++ type traits.
If the program adds specializations for std::integral_constant
, the behavior is undefined.
A helper alias template std::bool_constant
is defined for the common case where T
is bool.
template< bool B >
using bool_constant = integral_constant<bool, B>;
Two typedefs for the common case where T
is bool are provided:
true_type
std::integral_constant<bool, true> false_type
std::integral_constant<bool, false> [edit] Member types Name Definition value_type
T type
std::integral_constant<T, v> [edit] Member constants Name Value
constexpr T value
[static]
vconstexpr operator value_type() const noexcept;
Conversion function. Returns the wrapped value.
std::integral_constant::operator()constexpr value_type operator()() const noexcept;
(since C++14)Returns the wrapped value. This function enables std::integral_constant
to serve as a source of compile-time function objects.
template<class T, T v> struct integral_constant { static constexpr T value = v; using value_type = T; using type = integral_constant; // using injected-class-name constexpr operator value_type() const noexcept { return value; } constexpr value_type operator()() const noexcept { return value; } // since c++14 };[edit] Notes [edit] Example
#include <type_traits> using two_t = std::integral_constant<int, 2>; using four_t = std::integral_constant<int, 4>; static_assert(not std::is_same_v<two_t, four_t>); static_assert(two_t::value * 2 == four_t::value, "2*2 != 4"); static_assert(two_t() << 1 == four_t() >> 0, "2*2 != 4"); enum class E{ e1, e2 }; using c1 = std::integral_constant<E, E::e1>; using c2 = std::integral_constant<E, E::e2>; static_assert(c1::value != E::e2); static_assert(c1() == E::e1); static_assert(std::is_same_v<c2, c2>); int main() {}[edit] See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4