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;
我们用 int
、float
和 string
类型实例化了一个 Tuple
模板,并得到了一个实际类型 Tuple<int, float, std::string>
的结构。 Tuple
的代码现在可以 expand Types
pack.
从介绍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;
我们用 int
、float
和 string
类型实例化了一个 Tuple
模板,并得到了一个实际类型 Tuple<int, float, std::string>
的结构。 Tuple
的代码现在可以 expand Types
pack.