std::unexpected
From cppreference.com
| ヘッダー <exception> で定義 |
||
| void unexpected(); |
(C++11まで) | |
| [[noreturn]] void unexpected(); |
(C++11で非推奨) (C++17で削除) |
|
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) |
期待されない値として表現される (class template) |
| (C++11で非推奨)(C++17で削除) |
std::unexpected によって呼び出される関数の型 (typedef) |