std::get (std::variant)
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num t-dcl-rev-notes t-since-cxx17 ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num t-dcl-rev-notes t-since-cxx17 ">
</tbody><tbody>
</tbody>
| ヘッダ <variant> で定義
|
||
| (1) | (C++17以上) | |
template< std::size_t I, class... Types > constexpr std::variant_alternative_t<I, std::variant<Types...>>& get( std::variant<Types...>& v ); |
||
template< std::size_t I, class... Types > constexpr std::variant_alternative_t<I, std::variant<Types...>>&& get( std::variant<Types...>&& v ); |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>& get( const std::variant<Types...>& v ); |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>& get( const std::variant<Types...>&& v ); |
||
| (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 の要素にアクセスします (関数テンプレート) |