25

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

class C {
 public:
  auto f(...) -> T const;
}

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

我知道我可以把函数写成

T const f(...);

或者

T f(...) const;

但是,我想与我声明函数的方式保持一致,所以我决定auto f(...) -> RetType到处使用新的 C++11 方式。

4

1 回答 1

29

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

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

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

D1(参数声明子句) cv-qualifier-seq opt ref-qualifier opt exception-specification opt attribute-specifier-seq opt trailing-return-type opt

要声明const成员函数,您可以编写auto f(...) const -> T const;.

于 2012-12-23T22:23:17.140 回答