名前空間
変種
操作

std::unexpected

提供: cppreference.com
< cpp‎ | error
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
 
ヘッダ <exception> で定義
void unexpected();
(C++11未満)
[[noreturn]] void unexpected();
(C++11以上)
(非推奨)
(C++17で削除)

std::unexpected() は、動的例外指定に違反したとき、つまり例外指定の禁止する例外が関数から投げられたときに、 C++ のランタイムによって呼ばれます。

std::unexpected() はプログラムから直接呼ぶこともできます。

いずれの場合でも、 std::unexpected は現在設定されている std::unexpected_handler を呼びます。 デフォルトの std::unexpected_handlerstd::terminate を呼びます。

スタックの巻き戻し中にデストラクタが unexpected handler をリセットし、その巻き戻しが後に unexpected の呼び出しが発生させた場合、 throw 式の終わりに設定されていたハンドラが呼ばれるハンドラになります (ノート: 投げ直しが新しいハンドラを適用するかどうかは曖昧です)。

(C++11未満)

ス���ックの巻き戻し中にデストラクタが unexpected handler をリセットし、その巻き戻しが後に unexpected の呼び出しが発生させた場合、どのハンドラが呼ばれるかは未規定です。

(C++11以上)


目次

[編集] 引数

(なし)

[編集] 戻り値

(なし)

[編集] 例外

現在設定されている std::unexpected_handler によって投げられるあらゆる例外を投げます。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 2111 C++11 effect of calling set_unexpected during stack unwinding differs from C++98 and breaks some ABIs made unspecified

[編集] 関連項目

(C++17で削除)
std::unexpected によって呼ばれる関数の型
(typedef) [edit]