为可变参数模板添加的新语法实体的名称是什么?

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模式(在此上下文中的标识符).