Skip to content

Latest commit

 

History

History
83 lines (63 loc) · 2.18 KB

tuple_cat.md

File metadata and controls

83 lines (63 loc) · 2.18 KB

tuple_cat

  • tuple[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp11[meta cpp]
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;
}
  • std::tuple_cat[color ff0000]
  • std::tuple[link tuple.md]
  • std::get[link tuple/get.md]

出力

1
Hello
a
3.14
World

バージョン

言語

  • C++11

処理系

参照