最終更新日時:
が更新

履歴 編集

function
<tuple>

std::tuple_cat(C++11)

namespace std {
  template <class... Tuples>
  tuple<Ctypes ...> tuple_cat(Tuples&&...);           // C++11

  template <class... Tuples>
  constexpr tuple<Ctypes ...> tuple_cat(Tuples&&...); // C++14
}

概要

複数のtupleを繋ぎ合わせ、1つのtupleにする。

要件

  • Tuples...の全ての型がstd::tuple<Args...>であること。
  • Args...の各型が左辺値参照であればコピー構築可能、そうでなければムーブ構築可能であること。

戻り値

Tuples...の全てのtuple型の要素型全てを取り出し、std::forward<T>(x)して構築される1つのtupleオブジェクト。

備考

実装によっては、Tuples... パラメータパックに含めることのできる型として、他のタプルライクな型(pairarrayのような)を追加的にサポートする可能性がある。

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

int main()
{
  std::tuple<int, std::string> t1(1, "Hello");
  std::tuple<char, double> t2('a', 3.14);
  std::tuple<std::string> t3("World");

  // 3つのtupleを繋ぎ合わせる
  std::tuple<int, std::string, char, double, std::string> result =
      std::tuple_cat(t1, t2, t3);

  std::cout << std::get<0>(result) << std::endl;
  std::cout << std::get<1>(result) << std::endl;
  std::cout << std::get<2>(result) << std::endl;
  std::cout << std::get<3>(result) << std::endl;
  std::cout << std::get<4>(result) << std::endl;
}

出力

1
Hello
a
3.14
World

バージョン

言語

  • C++11

処理系

参照