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

时间:2012-07-03 15:47:16

标签: c++ c++11 member-functions carries-dependency

[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);

1 个答案:

答案 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]];
};