std::integral_constant
提供: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. |
| Defined in header <type_traits>
|
||
| template< class T, T v > struct integral_constant; |
(C + + 11以来) | |
std::integral_constant指定された型の静的定数をラップします。これは、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.
タイプboolための2つの専門分野が用意されています
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> | |
| タイプ
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> |
目次 |
[編集] メンバータイプ
| タイプ
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> |
[編集] メンバー定数
| 名前
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
|
値
T持つ型vの静的な定数式 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. |
[編集] メンバ関数
| operator value_type |
value_typeにオブジェクトは、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. (パブリックメンバ関数) |
[編集] 可能な実装
template<class T, T v> struct integral_constant { static constexpr T value = v; typedef T value_type; typedef integral_constant type; constexpr operator value_type() const { return value; } }; |
[編集] 例
#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" ); enum class 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"); }