属性: carries_dependency (C++11以上)
提供: cppreference.com
< cpp | language | attributes
解放-消費の std::memory_order の依存連鎖が関数の内外へ伝播することを示し、コンパイラが不必要なメモリフェンス命令をスキップできるようにします。
[編集]構文
[[carries_dependency]] | |||||||||
[編集]説明
解放-消費の std::memory_order の依存連鎖が関数の内外へ伝播することを示し、コンパイラが不必要なメモリフェンス命令をスキップできるようにします。
この属性は以下の2つの状況で現れることができます。
1) 関数またはラムダ式の引数宣言に適用できます。 この場合、その引数の初期化がそのオブジェクトの左辺値から右辺値への変換に依存性を伝播することを示します。
2) 全体としての関数宣言に適用できます。 この場合、戻り値がその関数の呼び出し式の評価に依存性を伝播することを示します。
この属性はあらゆる翻訳単位においてその関数またはその引数の最初の宣言に現れなければなりません。 別の翻訳単位においてその関数またはその引数の最初の宣言で使用されない場合、プログラムは ill-formed です。 診断は要求されません。
使用例は std::kill_dependency を参照してください。