std::integral_constant
De cppreference.com
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Déclaré dans l'en-tête <type_traits> | ||
template<class T, T v > struct integral_constant; | (depuis C++11) | |
std::integral_constant encapsule une constante statique du type spécifié. Il s'agit de la classe de base pour les caractères de C + + .
Original:
std::integral_constant wraps a static constant of specified type. It is the base class for the C++ type traits.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Deux spécialisations pour la bool type sont fournis:
Original:
Two specializations for the type bool are provided:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Defined in header <type_traits> | |
Type d' Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
true_type | std::integral_constant<bool, true> |
false_type | std::integral_constant<bool, false> |
Sommaire |
[modifier]Types de membres
Type d' Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
value_type | T |
type | std::integral_constant<T,v> |
[modifier]Constantes membres
Nom Original: Name The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Value |
value | statique expression constante de type avec T v valeur Original: static constant expression of type T with value v The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[modifier]Fonctions membres
operator value_type | convertit l'objet en value_type , retourne value Original: converts the object to value_type , returns value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (fonction membre publique) |
[modifier]Mise en œuvre possible
template<class T, T v>struct integral_constant {staticconstexpr T value = v;typedef T value_type;typedef integral_constant type;constexpr operator value_type()const{return value;}}; |
[modifier]Exemple
#include <iostream>#include <type_traits> int main(){typedef std::integral_constant<int, 2> two_t;typedef std::integral_constant<int, 4> four_t; // static_assert(std::is_same<two_t, four_t>::value,// "two_t and four_t are not equal!"); // error: static assertion failed: "two_t and four_t are not a same types" static_assert(two_t::value*2== four_t::value, "2*2 != 4"); enumclass my_e { e1, e2 };typedef std::integral_constant<my_e, my_e::e1> my_e_e1;typedef std::integral_constant<my_e, my_e::e2> my_e_e2; // static_assert(my_e_e1::value == my_e::e2,// "my_e_e1::value != my_e::e2");// error: static assertion failed: "my_e_e1::value != my_e::e2" static_assert(std::is_same<my_e_e2, my_e_e2>::value, "my_e_e2 != my_e_e2");}