名前空間
変種
操作

std::variant_alternative, std::variant_alternative_t

提供: 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 <std::size_t I, class T>
struct variant_alternative; /* undefined */
(1) (C++17以上)
template <std::size_t I, class... Types>
struct variant_alternative<I, variant<Types...>>;
(2) (C++17以上)
template <std::size_t I, class T> class variant_alternative<I, const T>;
(3) (C++17以上)
template <std::size_t I, class T>

class variant_alternative<I, volatile T>;
template <std::size_t I, class T>

class variant_alternative<I, const volatile T>;
(3) (C++17以上)
(C++20で非推奨)

variant の cv 修飾 (もしあれば) を選択肢の cv 修飾と組み合わせた、 variant (またはその cv 修飾された型) の選択肢の型へのコンパイル時インデックスアクセスを提供します。

形式的には、

2) インデックス I の選択肢の型と等しいメンバ typedef type を持つ TransformationTrait の要件を満たします。
3) それぞれ std::add_const_t<std::variant_alternative<I,T>>std::add_volatile_t<std::variant_alternative<I,T>>、および std::add_cv_t<std::variant_alternative<I,T>> を名付けるメンバ typedef type を持つ TransformationTrait の要件を満たします。

目次

[編集] メンバ型

メンバ型 定義
type variant の I 番目の選択肢の型。 I[0, sizeof...(Types)) の範囲内でなければならず、そうでなければプログラムは ill-formed です

[編集] ヘルパーテンプレートエイリアス

template <size_t I, class T>
using variant_alternative_t = typename variant_alternative<I, T>::type;
(C++17以上)

[編集]

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 2974 C++17 out-of-bounds index resulted in undefined behavior made ill-formed

[編集] 関連項目

variant の選択肢のリストのサイズをコンパイル時に取得します
(クラステンプレート) (変数テンプレート) [edit]
指定された要素の型を取得します
(クラステンプレートの特殊化) [edit]