C++11:"parameter pack" 和 "variadic template" 有什么区别?

C++11: What's the difference between "parameter pack" and "variadic template"?

从介绍http://en.cppreference.com/w/cpp/language/parameter_pack来看,"parameter pack"的概念似乎与"variadic template"的概念相同。那么它们之间的概念区别是什么?

谢谢!

从句法上讲,参数包是可变参数模板的一部分。例如,

template<class ... Types> struct Tuple {};

是可变结构模板,Types是里面的参数包。 Tuple本身不是参数包

您可以将任何一组类型参数传递给Tuple,它们将被打包到Types pack。例如在代码中

Tuple<int, float, std::string> foo;

我们用 intfloatstring 类型实例化了一个 Tuple 模板,并得到了一个实际类型 Tuple<int, float, std::string> 的结构。 Tuple 的代码现在可以 expand Types pack.