函式模板
<tuple>

std::tuple_cat

template <class... Tuples>  tuple<CTypes...> tuple_cat (Tuples&&... tpls);
連線元組
構造一個合適的tuple型別的物件,該物件包含tpls中所有元組的元素,並保持原有順序。

返回的tuple的每個元素都透過複製/移動構造(如同使用forward傳遞一樣)。

引數

tpls
逗號分隔的元組物件列表。它們可以是不同型別。

返回值

一個tuple物件,型別合適,用於容納args

返回物件的型別(tuple<CTypes...>)是包含Tuples中所有擴充套件型別的有序序列的tuple型別。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// tuple_cat example
#include <iostream>     // std::cout
#include <utility>      // std::pair
#include <string>       // std::string
#include <tuple>        // std::tuple, std::tuple_cat, std::get

int main ()
{

  std::tuple<float,std::string> mytuple (3.14,"pi");
  std::pair<int,char> mypair (10,'a');

  auto myauto = std::tuple_cat ( mytuple, std::tuple<int,char>(mypair) );

  std::cout << "myauto contains: " << '\n';
  std::cout << std::get<0>(myauto) << '\n';
  std::cout << std::get<1>(myauto) << '\n';
  std::cout << std::get<2>(myauto) << '\n';
  std::cout << std::get<3>(myauto) << '\n';

  return 0;
}

輸出
myauto contains:
3.14
pi
10
a


資料競爭

會訪問tpls的元素,如果其中任何一個元素的型別支援該函式呼叫的*移動語義*,則它將被修改。

異常安全

如果tuple元素的任何單個構造都不可能丟擲異常,則該操作永遠不會丟擲異常(無異常保證)。
否則,如果任何tpls物件不是*左值*,並且結果tuple中的至少一個型別可以從它透過*移動語義*構造,那麼在異常發生時,操作可能會將任意數量的此類物件置於無效狀態(無保證)。
否則,該函式僅涉及複製,並且該函式不產生副作用(強保證)。

另見