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

来自cppreference.com
< cpp‎ | language‎ | attributes

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

[编辑] 语法

[[carries_dependency]]

[编辑] 解释

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

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

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

此属性必须出现在任何翻译单元中的函数或其参数之一的首个声明上。若它未被用于另一翻译单元中的函数或其参数的首个声明上,则程序为病式;不要求诊断。

用法示例见 std::kill_dependency