std::variant_size, std::variant_size_v
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <variant> で定義
|
||
template <class T> struct variant_size; /* undefined */ |
(1) | (C++17以上) |
template <class... Types> struct variant_size<std::variant<Types...>> : std::integral_constant<std::size_t, sizeof...(Types)> { }; |
(2) | (C++17以上) |
template <class T> class variant_size<const T>; |
(3) | (C++17以上) |
template <class T> class variant_size<volatile T>; template <class T> class variant_size<const volatile T>; |
(3) | (C++17以上) (C++20で非推奨) |
コンパイル時定数式として variant (またはその cv 修飾された型) の選択肢の個数へのアクセスを提供します。
形式的には、
ヘルパー変数テンプレート
<tbody> </tbody> template <class T> inline constexpr std::size_t variant_size_v = std::variant_size<T>::value; |
(C++17以上) | |
std::integral_constant から継承
メンバ定数
value [静的] |
sizeof...(Types) (パブリック静的メンバ定数) |
メンバ関数
operator std::size_t |
オブジェクトを std::size_t に変換します。 value を返します (パブリックメンバ関数) |
operator() (C++14) |
value を返します (パブリックメンバ関数) |
メンバ型
| 型 | 定義 |
value_type
|
std::size_t
|
type
|
std::integral_constant<std::size_t, value>
|
ノート
std::variant_size のすべての特殊化は、何らかの N について std::integral_constant<std::size_t, N> の基本特性を持つ UnaryTypeTrait を満たします。
例
| This section is incomplete Reason: no example |
関連項目
| インデックスで指定された選択肢の型をコンパイル時に取得します (クラステンプレート) (エイリアステンプレート) | |
コンパイル時に tuple のサイズを取得します (クラステンプレートの特殊化) |