名前空間
変種
操作

std::variant_size, std::variant_size_v

提供: cppreference.com
< cpp‎ | utility‎ | variant
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
 
ヘッダ <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 修飾された型) の選択肢の個数へのアクセスを提供します。

形式的には、

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]