std::get (std::variant)
提供: cppreference.com
ヘッダ <variant> で定義
|
||
(1) | (C++17以上) | |
template< std::size_t I, class... Types > constexpr std::variant_alternative_t<I, std::variant<Types...>>& |
||
template< std::size_t I, class... Types > constexpr std::variant_alternative_t<I, std::variant<Types...>>&& |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>& |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>& |
||
(2) | (C++17以上) | |
template< class T, class... Types > constexpr T& get( std::variant<Types...>& v ); |
||
template< class T, class... Types > constexpr T&& get( std::variant<Types...>&& v ); |
||
template< class T, class... Types > constexpr const T& get( const std::variant<Types...>& v ); |
||
template< class T, class... Types > constexpr const T&& get( const std::variant<Types...>&& v ); |
||
1) インデックスベースの値アクセサ。 v.index() == I であれば、
v
に格納されている値を指す参照を返します。 そうでなければ、 std::bad_variant_access を投げます。 I
が variant の有効なインデックスでなければ、この呼び出しは ill-formed です。2) 型ベースの値アクセサ。 v が選択肢
T
を保持していれば、 v
に格納されている値を指す参照を返します。 そうでなければ、 std::bad_variant_access を投げます。 T
が Types...
内の一意な要素でなければ、この呼び出しは ill-formed です。目次 |
[編集] テンプレート引数
I | - | 調べるインデックス |
T | - | 調べる一意な型 |
Types... | - | variant を形成する型
|
[編集] 引数
v | - | variant
|
[編集] 戻り値
variant に格納されている値を指す参照。
[編集] 例外
1,2) エラーの場合 std::bad_variant_access を投げます。
[編集] 例
Run this code
#include <variant> #include <string> int main() { std::variant<int, float> v{12}, w; int i = std::get<int>(v); w = std::get<int>(v); w = std::get<0>(v); // same effect as the previous line // std::get<double>(v); // error: no double in [int, float] // std::get<3>(v); // error: valid index values are 0 and 1 try { std::get<float>(w); // w contains int, not float: will throw } catch (std::bad_variant_access&) {} }
[編集] 関連項目
(C++17) |
指定されたインデックスまたは型 (一意な場合) の値へのポインタを取得します。 エラーの場合はヌルを返します (関数テンプレート) |
タプルの指定された要素にアクセスします (関数テンプレート) | |
array の要素にアクセスします (関数テンプレート) | |
(C++11) |
pair の要素にアクセスします (関数テンプレート) |