'auto a_class :: f(...) - > T const'在语法上是不明确的?

Kel*_*ain 25 c++ c++11 trailing-return-type

如何在C++ 11中解释下面的成员函数原型?

class C {
 public:
  auto f(...) -> T const;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,它既可以是类C的const成员函数,也可以是非const成员函数,它返回类型为T的const值.

我知道我可以把函数写成

T const f(...);
Run Code Online (Sandbox Code Playgroud)

要么

T f(...) const;
Run Code Online (Sandbox Code Playgroud)

但是,我希望与我声明函数的方式保持一致,因此我决定在auto f(...) -> RetType任何地方使用新的C++ 11 方法.

Xeo*_*Xeo 29

trailing-return-type出现非静态成员函数的cv-和ref-qualifiers之后.这意味着问题中的示例与之相同T const f(...);.

§8.4.1 [dcl.fct.def.general] p2

函数定义中的声明符应具有该形式

D1(parameter-declaration-clause)cv-qualifier-seq opt ref-qualifier opt exception-specification opt attribute-specifier-seq opt trailing-return-type opt

要声明一个const成员函数,你要写auto f(...) const -> T const;.