Как называются новые синтаксические объекты, добавленные для шаблонов с переменными числами? - PullRequest
6 голосов
/ 02 ноября 2011

C ++ 11 введено Вариационные шаблоны

template <typename... Args>
void foo(Args... params) {
    cout << sizeof...(Args) << endl;
}

Как называются Args и params? Я знаю, что один из них (по крайней мере?) Называется набором шаблонов с переменным количеством символов, но что это? А как называется другой?

1 Ответ

12 голосов
/ 02 ноября 2011

Частичное цитирование FDIS, §14.5.3:

1 A пакет параметров шаблона - это параметр шаблона, который принимает ноль или более аргументов шаблона.

2 A пакет параметров функции - это параметр функции, который принимает ноль или более аргументов функции.

3 A пакет параметров - это либо пакет параметров шаблона, либо пакет параметров функции.

4 A расширение пакета состоит из шаблона и многоточие, создание которого приводит к нулю или большему числу экземпляров шаблона в списке.

Итак, в вашем примере

  • typename... Args - это пакет параметров шаблона (и, следовательно, также пакет параметров )
  • Args... params - это пакет параметров функции (и, следовательно, также пакет параметров )
  • sizeof...(Args) - это расширение пакета , где Args - это шаблон (идентификатор в этом контексте).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...