g ++ std :: is_function实现:什么是_ArgTypes ......?

时间:2013-02-02 08:12:48

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

我正在查看我的标题(g ++ - 4.5.2)中的一些模板的实现,我发现了以下内容:

/// is_function
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......)>
  : public true_type { };

前两个声明似乎合理,但我无法弄清楚第三个如何工作。什么是......?我在标准中寻找它,但找不到任何东西。

2 个答案:

答案 0 :(得分:6)

它与:

相同
_Res(_ArgTypes..., ...)

省略号参数前面的逗号是可选的。

答案 1 :(得分:0)

此模板处理函数中的可变长度参数。例如:

void foo(bool, char, int...)