FreeBSD Manual Pages
std::integral_constant(3) C++ Standard Libary std::integral_constant(3) NAME std::integral_constant - std::integral_constant Synopsis Defined in header <type_traits> template< class T, T v > (since C++11) 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. Specializations Two typedefs for the common case where T is bool are provided: Defined in header <type_traits> Name Definition true_type std::integral_constant<bool, true> false_type std::integral_constant<bool, false> Nested types Name Definition value_type T type std::integral_constant<T, v> Member constants Name Value constexpr T value v [static] (public static member constant) Member functions operator value_type returns the wrapped value (public member function) operator() returns the wrapped value (C++14) (public member function) std::integral_constant::operator value_type constexpr 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_con- stant to serve as a source of compile-time function objects. Possible implementation 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 }; Notes Feature-test macro Value Std Feature __cpp_lib_integral_constant_callable 201304L (C++14) std::inte- gral_constant::operator() __cpp_lib_bool_constant 201505L (C++17) std::bool_con- stant Example // Run this code #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() {} See also integer_sequence implements compile-time sequence of integers (C++14) (class template) http://cppreference.com 2024.06.10 std::integral_constant(3)
NAME | Synopsis | Specializations | Member constants | Member functions | Possible implementation | Notes | Example | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::integral_constant&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
