在 [dcl.attr.depend] / 1 中,我读到:
属性[...]
carries_dependency
[...]可以应用于函数声明或lambda中declarator-id
的{{1}}, 在这种情况下,它指定参数的初始化带有对(1.10)该对象的每个左值到右值转换(4.1)的依赖性。该属性也可以应用于函数的parameter-declaration
声明,在这种情况下,它指定返回值(如果有的话)对函数调用表达式的求值具有依赖性。
我缺少的是一种将属性应用于隐式declarator-id
参数的方法。
举例来说,考虑这个自由函数:
this
并且它等效(但对于属性)成员版本:
void fun(int i, Foo * [[carries_dependency]] f);
答案 0 :(得分:3)
我不确定并且没有一个支持这个测试的编译器,但是这里有一个可能的摆动:我认为语法[gram.decl]表明你应该能够把它(“属性” -specifier_opt“)你在同一个地方放置”const“来表示一个常量这个指针(”cv-qualifier-seq_opt“),这是有道理的:
parameters-and-qualifiers:
( parameter-declaration-clause ) attribute-specifier_opt cv-qualifier-seq_opt
ref-qualifier_opt exception-specification_opt
E.g。
struct X{
void f(int i) [[carries_dependency]];
};