【问题标题】:C++ Syntax - template <class ...Options>C++ 语法 - 模板 <class ...Options>
【发布时间】:2012-12-04 14:54:42
【问题描述】:

无法用谷歌搜索,所以只是寻找一个快速的答案。这个语法是什么意思,它是标准的 C++ 吗?

template <class ...Options>
class list_base_hook;

代码来自 boost 库。 http://www.boost.org/doc/libs/1_52_0/doc/html/intrusive/usage.html

【问题讨论】:

  • 这里的搜索关键字是“可变参数模板”。这意味着您可以传递许多参数。这是 C++11 的一个特性,但 Boost 在 C++03 之前做了一些技巧来使该类工作。

标签: c++ templates


【解决方案1】:

这是 variadic template,它是新 C++11 标准的一部分。

【讨论】:

    【解决方案2】:

    在 C++11 中,它是 variadic template parameter

    Boost 也将这种语法用于 C++03 中的“伪变量”模板——这意味着它是一组具有默认值的类型名。与 C++11 的可变参数不完全相同。像这样:

    template <class opt1 = dummy, class op2 = dummy, class op3 = dummy, /* and so on up to a large N */>
    class list_base_hook;
    

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2016-08-23
      相关资源
      最近更新 更多