Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::integral_constant

      From cppreference.com
      <cpp‎ |types
       
       
      Metaprogramming library
      Type traits
      Type categories
      (C++11)
      (C++11)(DR*)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11) 
      Type properties
      (C++11)
      (C++11)
      (C++14)
      (C++11)(deprecated in C++26)
      (C++11)(until C++20*)
      (C++11)(deprecated in C++20)
      (C++11)
      Type trait constants
      integral_constantbool_constanttrue_typefalse_type
      (C++11)(C++17)(C++11)(C++11)
      Metafunctions
      (C++17)
      Supported operations
      Relationships and property queries
      Type modifications
      Type transformations
      (C++11)(deprecated in C++23)
      (C++11)(deprecated in C++23)
      (C++11)
      (C++11)(until C++20*)(C++17)

      Compile-time rational arithmetic
      Compile-time integer sequences
       
      Defined in header<type_traits>
      template<class T, T v>
      struct integral_constant;
      (since C++11)

      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 forstd::integral_constant, the behavior is undefined.

      Contents

      [edit]Helper alias templates

      A helper alias templatestd::bool_constant is defined for the common case whereT isbool.

      template<bool B>
      using bool_constant= integral_constant<bool, B>;
      (since C++17)

      [edit]Specializations

      Two typedefs for the common case whereT isbool are provided:

      Defined in header<type_traits>
      Name Definition
      true_typestd::integral_constant<bool,true>
      false_typestd::integral_constant<bool,false>

      [edit]Member types

      Name Definition
      value_typeT
      typestd::integral_constant<T, v>

      [edit]Member constants

      Name Value
      constexpr T value
      [static]
      v
      (public static member constant)

      [edit]Member functions

      operator value_type
      returns the wrapped value
      (public member function)[edit]
      operator()
      (C++14)
      returns the wrapped value
      (public member function)[edit]

      std::integral_constant::operator value_type

      constexpr operator value_type()constnoexcept;

      Conversion function. Returns the wrapped value.

      std::integral_constant::operator()

      constexpr value_type operator()()constnoexcept;
      (since C++14)

      Returns the wrapped value. This function enablesstd::integral_constant to serve as a source of compile-time function objects.

      [edit]Possible implementation

      template<class T, T v>struct integral_constant{staticconstexpr T value= v;using value_type= T;using type= integral_constant;// using injected-class-nameconstexpr operator value_type()constnoexcept{return value;}constexpr value_type operator()()constnoexcept{return value;}// since c++14};

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_integral_constant_callable201304L(C++14)std::integral_constant::operator()
      __cpp_lib_bool_constant201505L(C++17)std::bool_constant

      [edit]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(notstd::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"); enumclass 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

      implements compile-time sequence of integers
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/integral_constant&oldid=173610"

      [8]ページ先頭

      ©2009-2025 Movatter.jp