【问题标题】:C++11: What's the difference between "parameter pack" and "variadic template"?C++11:“参数包”和“可变参数模板”有什么区别?
【发布时间】:2016-11-12 23:09:03
【问题描述】:

http://en.cppreference.com/w/cpp/language/parameter_pack的介绍中看到,“参数包”的概念似乎与“可变参数模板”相同。那么它们之间的概念区别是什么?

谢谢!

【问题讨论】:

    标签: templates c++11 parameters pack variadic


    【解决方案1】:

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

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

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

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

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

    我们用intfloatstring 类型实例化了一个Tuple 模板,并得到了一个实际类型为Tuple&lt;int, float, std::string&gt; 的结构。 Tuple的代码现在可以expandTypes打包了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      相关资源
      最近更新 更多