std::unexpected
ja.cppreference.net より
| ヘッダで定義 <exception>
|
||
void unexpected();
|
(C++11 まで) | |
[[noreturn]] void unexpected();
|
(C++11 から) (C++17 まで) (C++11 で非推奨) |
|
std::unexpected() は、動的例外仕様に違反した場合にC++ランタイムによって呼び出されます。つまり、例外仕様がこの型の例外を禁止している関数から例外がスローされた場合です。
std::unexpected() はプログラムから直接呼び出されることもあります。
どちらの場合も、std::unexpected は現在インストールされている std::unexpected_handler を呼び出します。デフォルトの std::unexpected_handler は std::terminate を呼び出します。
|
デストラクタがスタック巻き戻し中にunexpectedハンドラをリセットし、その後巻き戻しが |
(C++11 まで) |
|
デストラクタがスタック巻き戻し中にunexpectedハンドラをリセットした場合、その後巻き戻しが |
(C++11 から) |
例外
現在インストールされている std::unexpected_handler によってスローされる例外をスローします。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2111 | C++11 |
スタックアンワインディング中に
std::set_unexpected
を呼び出した場合の効果が
C++98と異なり、一部のABIを破壊する |
未規定とする |
関連項目
|
(C++23)
|
予期しない値として表現される
(クラステンプレート) |
|
(C++11で非推奨)
(C++17で削除)
|
std::unexpected
によって呼び出される関数の型
(typedef) |