在C++ 11中,如何指定隐含的"this"参数"[[carry_dependency]]"?

Mar*_*utz 21 c++ member-functions c++11 carries-dependency

[dcl.attr.depend]/1中,我读到:

属性[...] carries_dependency[...]可以被应用到declarator-idparameter-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)

Ste*_*e M 3

我不确定并且没有支持此测试的编译器,但这里有一个可能性:我认为语法 [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)