名前空間
変種
操作

std::variant_size, std::variant_size_v

提供: cppreference.com
< cpp‎ | utility‎ | variant
 
 
 
 
ヘッダ <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>;

template <class T> class variant_size<volatile T>;

template <class T> class variant_size<const volatile T>;
(3) (C++17以上)

コンパイル時定数式として variant (またはその cv 修飾された型) の選択肢の個数へのアクセスを提供します。

形式的には、

2) std::integral_constant<std::size_t, sizeof...(Types)>基本特性を持つ UnaryTypeTrait の要件を満たします。
3) std::integral_constant<std::size_t, variant_size<T>>基本特性を持つ UnaryTypeTrait の要件を満たします。

目次

[編集] ヘルパー変数テンプレート

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 を満たします。

[編集]

[編集] 関連項目

インデックスで指定された選択肢の型をコンパイル時に取得します
(クラステンプレート) (エイリアステンプレート) [edit]
コンパイル時に tuple のサイズを取得します
(クラステンプレートの特殊化) [edit]