std::bad_variant_access
From cppreference.com
| ヘッダ <variant> で定義 |
||
| class bad_variant_access : public std::exception |
(C++17以降) | |
std::bad_variant_access は、以下の状況でスローされる例外の型です。
- std::get(std::variant) が、現在アクティブな代替に一致しないインデックスまたは型で呼び出された場合。
-
std::visitが、valueless_by_exceptionのバリアントを訪問するために呼び出された場合。
|
(C++26以降) |
目次 |
[編集] メンバ関数
| (コンストラクタ) |
新しい bad_variant_access オブジェクトを構築します。(public member function) |
| operator= |
bad_variant_access オブジェクトを置き換えます。(public member function) |
| what |
説明文字列を返す (public member function) |
std::bad_variant_access::bad_variant_access
| bad_variant_access() noexcept; |
(1) | (C++17以降) |
| bad_variant_access( const bad_variant_access& other ) noexcept; |
(2) | (C++17以降) |
what() 経由でアクセス可能な、実装定義のヌル終端バイト文字列を持つ新しい bad_variant_access オブジェクトを構築します。
1) デフォルトコンストラクタ。
2) コピーコンストラクタ。 *this と other が両方とも動的型
std::bad_variant_access を持つ場合、代入後には std::strcmp(what(), other.what()) == 0 となります。パラメータ
| その他 | - | コピーする別の例外オブジェクト |
std::bad_variant_access::operator=
| bad_variant_access& operator=( const bad_variant_access& other ) noexcept; |
(C++17以降) | |
other の内容で代入します。 *this と other が両方とも動的型 std::bad_variant_access を持つ場合、代入後には std::strcmp(what(), other.what()) == 0 となります。
パラメータ
| その他 | - | 割り当てる別の例外オブジェクト |
戻り値
*this
std::bad_variant_access::what
virtual const char* what() const noexcept; |
(C++17以降) | |
説明文字列を返します。
戻り値
説明情報を含む、実装定義のヌル終端文字列へのポインタ。この文字列は std::wstring として変換および表示するのに適しています。このポインタは、それが取得された例外オブジェクトが破棄されるか、例外オブジェクトの非 const メンバー関数(例:コピー代入演算子)が呼び出されるまで、少なくとも有効であることが保証されます。
|
返された文字列は、定数評価中に通常のリテラルエンコーディングでエンコードされます。 |
(C++26以降) |
注釈
実装は what() をオーバーライドすることが許可されていますが、必須ではありません。
std::exception から継承
メンバ関数
| [virtual] |
例外オブジェクトを破棄する ( std::exception の仮想 public メンバー関数) |
| [virtual] |
説明文字列を返す ( std::exception の仮想 public メンバー関数) |
[編集] 例
このコードを実行
#include <iostream> #include <variant> int main() { std::variant<int, float> v; v = 12; try { std::get<float>(v); } catch (const std::bad_variant_access& e) { std::cout << e.what() << '\n'; } }
実行結果の例
bad_variant_access
[編集] 関連項目
| (C++17) |
インデックスまたは型(型が一意である場合)を指定して variant の値を読み取る。エラーの場合は例外をスローする (function template) |
| (C++17) |
1つまたは複数の variant が保持する引数で、与えられたファンクタを呼び出す(function template) |
| (C++26) |
variant が保持する引数で、与えられたファンクタを呼び出す(public member function) |