C++ 元组作为函数参数

C++ 元组作为函数参数,c++,c++11,tuples,variadic,C++,C++11,Tuples,Variadic,如果可能的话,我有点困惑,如何在函数中使用可变元组作为参数,以及如何初始化它 template <typename T, Arg ...> void foo (int a, std::tuple<T, sizeof(Arg)> TupleTest); ... foo(TupleTest(2, "TEST", 5.5)); 模板 voidfoo(inta,std::tuple-TupleTest); ... foo(TupleTest(2,“TES

如果可能的话,我有点困惑,如何在函数中使用可变元组作为参数,以及如何初始化它

    template <typename T, Arg ...> 
      void foo (int a, std::tuple<T, sizeof(Arg)> TupleTest);
...

foo(TupleTest(2, "TEST", 5.5));
模板
voidfoo(inta,std::tuple-TupleTest);
...
foo(TupleTest(2,“TEST”,5.5));

如何使用c++0x实现这一点?

您不需要获取模板参数的数量。只要这样做:

template <typename... T>
void foo(int a, std::tuple<T...> TupleTest);

// make_tuple so we don't need to enter all the type names
foo(0, std::make_tuple(2, "TEST", 5.5));
模板
voidfoo(inta,std::tuple-TupleTest);
//生成tuple,这样我们就不需要输入所有类型名
foo(0,std::make_tuple(2,“TEST”,5.5));

您不需要获取模板参数的数量。只要这样做:

template <typename... T>
void foo(int a, std::tuple<T...> TupleTest);

// make_tuple so we don't need to enter all the type names
foo(0, std::make_tuple(2, "TEST", 5.5));
模板
voidfoo(inta,std::tuple-TupleTest);
//生成tuple,这样我们就不需要输入所有类型名
foo(0,std::make_tuple(2,“TEST”,5.5));

您想要
sizeof
做什么?只需使用变量展开:

template <typename T, typename Arg ...> 
void foo(int a, std::tuple<T, Arg...> TupleTest);

最后,类型参数
T
没有实际用途(除非您明确禁止空模板列表),因此您可以删除它而不会丢失。

您想要
sizeof
做什么?只需使用变量展开:

template <typename T, typename Arg ...> 
void foo(int a, std::tuple<T, Arg...> TupleTest);

最后,类型参数
T
没有实际用途(除非您明确禁止空模板列表),因此您可以删除它而不会丢失它。

这有点不清楚-您试图实现什么?你可以说
模板void foo(std::tuple t){/*…*/}
。什么是TupleTest?它是一种元组吗?为什么
inta
在元组之外?把
sizeof(Arg)
放在那里有什么意义?这有点不清楚-你想实现什么?你可以说
模板void foo(std::tuple t){/*…*/}
。什么是TupleTest?它是一种元组吗?为什么
inta
在元组之外?把
sizeof(Arg)
放在那里有什么意义?