属性: noreturn (C++11以上)
提供: cppreference.com
関数が戻らないことを示します。
構文
[[noreturn]]
|
||
説明
関数が戻らないことを示します。
この属性は関数宣言で宣言されている関数の名前にのみ適用されます。 この属性を持つ関数が実際には戻った場合、動作は未定義です。
いずれかの宣言がこの属性を指定する場合、その関数の最初の宣言はこの属性を指定しなければなりません。 ある関数がある翻訳単位で [[noreturn]] 付きで宣言され、同じ関数が別の翻訳単位で [[noreturn]] なしで宣言された場合、プログラムは ill-formed です。 診断は要求されません。
例
Run this code
[[ noreturn ]] void f() {
throw "error";
// OK
}
void q [[ noreturn ]] (int i) {
// behavior is undefined if called with an argument <= 0
if (i > 0) {
throw "positive";
}
}
// void h() [[noreturn]]; // error: attribute applied to function type of h, not h itself
標準ライブラリ
以下の標準ライブラリの関数は noreturn 属性付きで宣言されます。
終了関数 | |
(C++11) |
クリーンアップせずにプログラムを正常終了させます (関数) |
| (クリーンアップせずに) プログラムを異常終了させます (関数) | |
| クリーンアップをしてプログラムを正常終了させます (関数) | |
(C++11) |
完全なクリーンアップをせずにプログラムを素早く終了させます (関数) |
| 例外処理が失敗したときに呼ばれる関数 (関数) | |
(C++17で削除) |
動的例外指定に違反したときに呼ばれる関数 (関数) |
常に例外を投げる関数 | |
(C++11) |
std::exception_ptr から例外を投げます (関数) |
| 格納されている例外を投げます ( std::nested_exceptionのパブリックメンバ関数)
| |
(C++11) |
std::nested_exception をミックスインして引数を投げます (関数テンプレート) |
非ローカルジャンプ (C++17以上) | |
| 指定された場所へジャンプします (関数) |
関連項目
_Noreturn の C言語リファレンス
|