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

末尾のreturnタイプは、非静的メンバー関数のcvおよびref修飾子の後にあります。これは、質問の例がと同じであることを意味しT const f(...);ます。

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

関数定義の宣言者は、次の形式をとる必要があります。

D1parameter-declaration-clausecv-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 に答える