最終更新日時:
が更新

履歴 編集

後置戻り値型をプレースホルダーにすることを許可(C++14)

概要

戻り値の型を後置する関数宣言構文ラムダ式の、後置戻り値型(trailing return type)をautoプレースホルダーとし、そのプレースホルダーを修飾することで、戻り値型の推論を補助できる。

static int static_value = 3;

// 関数宣言構文の場合:
// 戻り値の型はint&。
// return文をdecltypeで推論した結果はintとなり、
// その型を参照(&)で修飾している。
auto f() -> auto& { return static_value; }

// ラムダ式の場合:
// 関数オブジェクトgの戻り値型もまたint&
auto g = []() -> auto& { return static_value; };

static int static_value = 3;

// 戻り値の型はint&。
// return文をdecltypeで推論した結果はintとなり、
// その型を参照(&)で修飾している。
auto f() -> auto& { return static_value; }

int main()
{
  // 関数オブジェクトgの戻り値型もまたint&
  auto g = []() -> auto& { return static_value; };

  int& result_f = f();
  int& result_g = g();
}

出力

この機能が必要になった背景・経緯

この機能は、C++14で導入された「通常関数の戻り値型推論」の機能において、ラムダ式から参照の戻り値を返すことを目的として導入された。

関連項目