函数模板
<tuple>

std::make_tuple

template<class... Types>  tuple<VTypes...> make_tuple (Types&&... args);
构造元组
构造一个适当的 tuple 类型对象来包含 args 中指定的元素。

返回对象的类型 (tuple<VTypes...>) 从 Types 推导得出:对于 Types 中的每种类型,其 decay 等效类型将用于 VTypes (除了 reference_wrapper 类型,其将使用相应的引用类型代替)。

该函数调用 tuple 的初始化构造函数,将 args 转发给它。

参数

args
构造的 tuple 应包含的元素列表。

返回值

一个适当类型的 tuple 对象,用于容纳 args

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// make_tuple example
#include <iostream>
#include <tuple>
#include <functional>

int main()
{
  auto first = std::make_tuple (10,'a');             // tuple < int, char >

  const int a = 0; int b[3];                         // decayed types:
  auto second = std::make_tuple (a,b);               // tuple < int, int* >

  auto third = std::make_tuple (std::ref(a),"abc");  // tuple < const int&, const char* >

  std::cout << "third contains: " << std::get<0>(third);
  std::cout << " and " << std::get<1>(third);
  std::cout << std::endl;

  return 0;
}

输出
third contains: 0 and abc


数据竞争

如果 Types 中的任何类型是支持移动语义的类型的右值引用,则其对应的参数会被修改。

异常安全

该函数为每个对象提供的保证级别与相应元素构造函数提供的相同。

另见