在C ++ 11中,如何指定隐式“ this”参数“ [[carries_dependency]]”?

问题描述 投票:21回答:1

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

属性[...]carries_dependency[...]可以在函数声明或lambda中应用于declarator-idparameter-declaration,在这种情况下,它指定参数的初始化带有对该对象的每个左值到右值转换(4.1)的依赖项(1.10)。该属性也可以应用于函数的declarator-id声明,在这种情况下,它指定返回值(如果有的话)携带对函数调用表达式求值的依赖。

我所缺少的是将属性应用于隐式this参数的方法。

通过示例,考虑这个免费功能:

void fun(int i, Foo * [[carries_dependency]] f);

和它等效(但对于属性)成员版本:

void Foo::fun(int i); // can't add [[carries_dependency]] here?

在[dcl.attr.depend] / 1中,我读到:属性[...] carry_dependency [...]可以应用于函数声明或lambda中的参数声明的声明符id,在在这种情况下...

c++ c++11 this member-functions carries-dependency
1个回答
3
投票

我不确定,也没有编译器对此进行测试,但是有一种可能:我认为语法[gram.decl]表示您应该可以使用它(“ attribute- specifier_opt“)放在同一位置,您可以将” const“指示此指针的常量(” cv-qualifier-seq_opt“),这很有意义:

© www.soinside.com 2019 - 2024. All rights reserved.