名前空間
変種
操作

属性: nodiscard (C++17以上)

提供: 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
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
 
属性
(C++14)
nodiscard
(C++17)
(C++20)(C++20)
(C++20)(C++20)(C++20)
 

nodiscard 宣言された関数、または nodiscard 宣言された列挙またはクラスを値返しする関数が、 void へのキャスト以外の値を破棄する式から呼ばれた場合、コンパイラは警告を発することが推奨されます。

目次

[編集] 構文

[[nodiscard]]

[編集] 説明

関数宣言、列挙宣言、またはクラス宣言で現れます。

nodiscard 宣言された関数、または nodiscard 宣言された列挙またはクラスを値返しする関数が、 void へのキャスト以外の値を破棄する式から呼ばれた場合、コンパイラは警告を発することが推奨されます。

[編集]

struct [[nodiscard]] error_info { };
error_info enable_missile_safety_mode();
void launch_missiles();
void test_missiles() {
   enable_missile_safety_mode(); // nodiscard な値の破棄をコンパイラが警告するかもしれません。
   launch_missiles();
}
error_info& foo();
void f1() {
    foo(); // nodiscard な型ですが、値で返されていないため、警告はありません。
}


[編集] 標準ライブラリ

以下の標準ライブラリの関数は nodiscard 属性付きで宣言されます。

確保関数
確保関数
(関数) [edit]
未初期化記憶域を確保します
(std::allocatorのパブリックメンバ関数) [edit]
[静的]
アロケータを使用して未初期化記憶域を確保します
(std::allocator_traitsのパブリック静的メンバ関数) [edit]
メモリを確保します
(std::pmr::memory_resourceのパブリックメンバ関数) [edit]
メモリを確保します
(std::pmr::polymorphic_allocatorのパブリックメンバ関数) [edit]
外側のアロケータを使用して未初期化記憶域を確保します
(std::scoped_allocator_adaptorのパブリックメンバ関数) [edit]
間接アクセス
(C++17)
ポインタ最適化バリア
(関数テンプレート) [edit]
ポインタがアラインされていることをコンパイラに伝えます
(関数テンプレート) [edit]
空かどうか調べる関数
(C++17)
コンテナが空かどうか調べます
(関数) [edit]
ノードハンドルが空かどうか調べます
(node handleのパブリックメンバ関数)
コンテナが空かどうか調べます
(std::arrayのパブリックメンバ関数) [edit]
文字列が空かどうか調べます
(std::basic_stringのパブリックメンバ関数) [edit]
ビューが空かどうか調べます
(std::basic_string_viewのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::dequeのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::forward_listのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::listのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::mapのパブリックメンバ関数) [edit]
マッチが成功したかどうか調べます
(std::match_resultsのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::multimapのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::multisetのパブリックメンバ関数) [edit]
ベースとなるコンテナが空かどうか調べます
(std::priority_queueのパブリックメンバ関数) [edit]
ベースとなるコンテナが空かどうか調べます
(std::queueのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::setのパブリックメンバ関数) [edit]
シーケンスが空かどうか調べます
(std::spanのパブリックメンバ関数) [edit]
ベースとなるコンテナが空かどうか調べます
(std::stackのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::unordered_mapのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::unordered_multimapのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::unordered_multisetのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::unordered_setのパブリックメンバ関数) [edit]
コンテナが空かどうか調べます
(std::vectorのパブリックメンバ関数) [edit]
パスが空かどうか調べます
(std::filesystem::pathのパブリックメンバ関数) [edit]
その他
(C++11)
(場合によっては新しいスレッドで) 非同期に関数を実行し、その結果を保持する std::future を返します
(関数テンプレート) [edit]