"auto a_class::f(...) -> T const"在语法中是否模棱两可?

Is 'auto a_class::f(...) -> T const' ambiguous in the grammar?

本文关键字:const 语法 是否 模棱两可 auto class gt      更新时间:2023-10-16

如何在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; .