奇怪的语法 - 参数包扩展中的两个省略号运算符

时间:2012-12-29 09:56:43

标签: c++ c++11 variadic-templates

  

可能重复:
  What is the meaning of “… …” token?

在查看libc ++的标题<type_traits>时,我偶然发现了这些类模板特化:

template<typename>
    struct is_function
    : public false_type { };

template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...)>
    : public true_type { };

template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......)>    // <-- Huh?
    : public true_type { };

还有三对专业化(constvolatileconst volatile变体),都是以同样的方式。

看起来两个省略号操作符组合在一起。我唯一能提到的就是cplusplus.com,它说它也可以用空格(_ArgTypes... ...)或逗号(_ArgTypes..., ...)写,但没有提供什么说明这意味着。

那么,这种语法意味着什么?像这样的专业化的目的是什么?

0 个答案:

没有答案
相关问题