最終更新日時:
が更新

履歴 編集

function
<tuple>

std::forward_as_tuple(C++11)

namespace {
  template <class... Types>
  tuple<Types&&...> forward_as_tuple(Types&&...) noexcept;           // C++11

  template <class... Types>
  constexpr tuple<Types&&...> forward_as_tuple(Types&&...) noexcept; // C++14
}

概要

パラメータの元の型からなるtupleを生成する。左辺値参照型は左辺値参照型として、右辺値は右辺値参照として転送される。

戻り値

パラメータの元の型からなるtupleオブジェクト

例外

投げない

#include <iostream>
#include <tuple>
#include <string>

int main()
{
  // 一時オブジェクトからは右辺値参照のtupleが作られる
  std::tuple<int&&, char&&, std::string&&> t1 = std::forward_as_tuple(1, 'a', std::string("Hello"));

  // 左辺値からは左辺値参照のtupleが作られる
  int a = 1;
  char b = 'a';
  std::string c = "Hello";
  std::tuple<int&, char&, std::string&> t2 = std::forward_as_tuple(a, b, c);
}

出力

バージョン

言語

  • C++11

処理系

注意事項

forward_as_tupleは、ドラフト仕様の段階でpack_argumentsという名前で一時期表記されていた。
コンパイラのバージョンによっては、この名前での実装もありえる。

参照