Mar*_*utz 21 c++ member-functions c++11 carries-dependency
在[dcl.attr.depend]/1中,我读到:
属性[...]
carries_dependency[...]可以被应用到declarator-id的parameter-declaration在函数声明或λ,在这种情况下,它SPECI音响上课该参数的初始化携带依赖性(1.10)的每个左值到右值该对象的转换(4.1).该属性也可以应用于declarator-id函数声明,在这种情况下,它指定返回值(如果有的话)对函数调用表达式的求值具有依赖性.
我缺少的是一种将属性应用于隐式this参数的方法.
举例来说,考虑这个免费功能:
void fun(int i, Foo * [[carries_dependency]] f);
Run Code Online (Sandbox Code Playgroud)
它等同于(但对于属性)成员版本:
void Foo::fun(int i); // can't add [[carries_dependency]] here?
Run Code Online (Sandbox Code Playgroud)
我不确定并且没有支持此测试的编译器,但这里有一个可能性:我认为语法 [gram.decl] 表明你应该能够将它(“attribute-specifier_opt” )在同一位置,您可以放置“const”来指示常量 this 指针(“cv-qualifier-seq_opt”),这是有意义的:
parameters-and-qualifiers:
( parameter-declaration-clause ) attribute-specifier_opt cv-qualifier-seq_opt
ref-qualifier_opt exception-specification_opt
Run Code Online (Sandbox Code Playgroud)
例如
struct X{
void f(int i) [[carries_dependency]];
};
Run Code Online (Sandbox Code Playgroud)