1

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

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

foo(TupleTest(2, "TEST", 5.5));

如何使用 c++0x 来实现?

4

2 回答 2

9

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

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));
于 2012-01-05T19:18:10.317 回答
2

你想要sizeof什么?只需使用可变参数扩展:

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

这里,TupleTest参数的名称,而不是类型名称。所以在调用该方法时,不要使用它。

foo(42, std::tuple<int, char const*, double>(2, "TEST", 5.5));

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

于 2012-01-05T19:26:37.587 回答