std::variant_alternative, std::variant_alternative_t
提供: cppreference.com
ヘッダ <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>; |
(3) | (C++17以上) (C++20で非推奨) |
variant の cv 修飾 (もしあれば) を選択肢の cv 修飾と組み合わせた、 variant (またはその cv 修飾された型) の選択肢の型へのコンパイル時インデックスアクセスを提供します。
形式的には、
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以上) | |
[編集] 例
This section is incomplete Reason: no example |
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
DR | 適用先 | 発行時の動作 | 正しい動作 |
---|---|---|---|
LWG 2974 | C++17 | out-of-bounds index resulted in undefined behavior | made ill-formed |
[編集] 関連項目
(C++17) |
variant の選択肢のリストのサイズをコンパイル時に取得します (クラステンプレート) (変数テンプレート) |
指定された要素の型を取得します (クラステンプレートの特殊化) |