Mot*_*tti 6 c++ terminology variadic-templates c++11
C++ 11引入了可变参数模板
template <typename... Args>
void foo(Args... params) {
cout << sizeof...(Args) << endl;
}
Run Code Online (Sandbox Code Playgroud)
Args
和的名字是params
什么?我知道其中一个(至少?)被称为可变参数模板包,但它是什么?另外叫什么?
ild*_*arn 12
部分引用FDIS,§14.5.3:
1甲模板参数包是接受零个或多个模板参数模板参数.
2甲函数参数包是接受零个或多个功能参数的函数的参数.
3甲参数包或者是一个模板参数包或函数参数包.
4甲包扩展由一个的图案和省略号,实例化,其中产生所述图案的零个或多个实例中的列表.
所以在你的例子中,
typename... Args
是一个模板参数包(因此也是一个参数包)Args... params
是一个函数参数包(因此也是一个参数包)sizeof...(Args)
是包扩展,其中Args
是模式(在此上下文中的标识符).