关于c ++ 11标准中可变参数模板的混淆

Zha*_*ang 3 c++ templates variadic-templates c++11

这两个功能有什么区别?

template <class ...Types> void f(Types... args...){}
template <class ...Types> void g(Types... args){}
Run Code Online (Sandbox Code Playgroud)

Xeo*_*Xeo 7

f 与...完全相同

template <class ...Types> void f(Types... args, ...){}
//                                            ^^^^^
Run Code Online (Sandbox Code Playgroud)

即,它只是来自C的一个普通的可变参数列表.由于历史原因,它可以在没有通常,需要分离参数的情况下使用.差异g就是那个参数.

请注意,任何参数都不会传递给C风格的可变参数列表,因为C++风格的可变参数将"吞噬" 所有参数.