名前空間
変種
操作

属性: noreturn (C++11以上)

提供: cppreference.com
< cpp‎ | language‎ | attributes
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
 
属性
noreturn‎
(C++11)
(C++14)
(C++17)
(C++20)(C++20)
 

関数が戻らないことを示します。

目次

[編集] 構文

[[noreturn]]

[編集] 説明

関数が戻らないことを示します。

この属性は関数宣言で宣言されている関数の名前にのみ適用されます。 この属性を持つ関数が実際には戻った場合、動作は未定義です。

いずれかの宣言がこの属性を指定する場合、その関数の最初の宣言はこの属性を指定しなければなりません。 ある関数がある翻訳単位で [[noreturn]] 付きで宣言され、同じ関数が別の翻訳単位で [[noreturn]] なしで宣言された場合、プログラムは ill-formed です。 診断は要求されません。

[編集]

[[ 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)
クリーンアップせずにプログラムを正常終了させます
(関数) [edit]
(クリーンアップせずに) プログラムを異常終了させます
(関数) [edit]
クリーンアップをしてプログラムを正常終了させます
(関数) [edit]
完全なクリーンアップをせずにプログラムを素早く終了させます
(関数) [edit]
例外処理が失敗したときに呼ばれる関数
(関数) [edit]
(C++17で削除)
動的例外指定に違反したときに呼ばれる関数
(関数) [edit]
常に例外を投げる関数
std::exception_ptr から例外を投げます
(関数) [edit]
格納されている例外を投げます
(std::nested_exceptionのパブリックメンバ関数)
std::nested_exception をミックスインして引数を投げます
(関数テンプレート) [edit]
非ローカルジャンプ (C++17以上)
指定された場所へジャンプします
(関数) [edit]

[編集] 関連項目