C++ 属性:carries_dependency (C++11 起)

< cpp‎ | language‎ | attributes

指示释放消费 std::memory_order 中的依赖链传进和传出该函数,这允许编译器跳过不必要的内存栅栏指令。

语法

[[carries_dependency]]

解释

指示释放消费 std::memory_order 中的依赖链传进和传出该函数,这允许编译器跳过不必要的内存栅栏指令。

此属性可在两种情形中出现:

1) 它可应用于函数或 lambda 表达式的形参声明,该情况下它指示从该形参的初始化向该对象的左值到右值转换中携带依赖。
2) 它可应用于函数声明整体,该情况下它指示从返回值向函数调用表达式的求值中携带依赖。

此属性必须出现在任意翻译单元中某个函数或其形参之一的首个声明上。若另一翻译单元中的该函数或其形参的首个声明上未使用该属性,则程序非良构;不要求诊断。

用法示例见 std::kill_dependency