【发布时间】:2016-11-12 23:09:03
【问题描述】:
从http://en.cppreference.com/w/cpp/language/parameter_pack的介绍中看到,“参数包”的概念似乎与“可变参数模板”相同。那么它们之间的概念区别是什么?
谢谢!
【问题讨论】:
标签: templates c++11 parameters pack variadic
从http://en.cppreference.com/w/cpp/language/parameter_pack的介绍中看到,“参数包”的概念似乎与“可变参数模板”相同。那么它们之间的概念区别是什么?
谢谢!
【问题讨论】:
标签: templates c++11 parameters pack variadic
从句法上讲,参数包是可变参数模板的一部分。例如,
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的代码现在可以expandTypes打包了。
【讨论】: