"auto a_class::f(...) -> T const"在语法中是否模棱两可?
Is 'auto a_class::f(...) -> T const' ambiguous in the grammar?
如何在c++ 11中解释下面的成员函数原型?
class C {
public:
auto f(...) -> T const;
}
在我看来,它既可以是C类的const成员函数,也可以是返回类型为t的const值的非const成员函数。
我知道我可以把函数写成T const f(...);
或
T f(...) const;
然而,我想与我声明函数的方式保持一致,所以我决定在所有地方使用新的c++ 11 auto f(...) -> RetType
方式。
尾随返回类型出现在非静态成员函数的 cv和ref限定符之后。这意味着问题中的例子与T const f(...);
相同。
§8.4.1 [dcl.fct.def.general] p2
函数定义中的声明符的形式应为
D1
(参数声明子句) cv-qualifier-seqopt ref-qualifieropt exception-specificationopt attribute-specifier-seqopt尾符-返回类型opt
声明const
成员函数,可以这样写:auto f(...) const -> T const;
.