Путаница с вариативными шаблонами в стандарте С++ 11

В чем разница между двумя функциями?

template <class ...Types> void f(Types... args...){}
template <class ...Types> void g(Types... args){}

person ZhangXiongpang    schedule 24.02.2013    source источник
comment
Связано: stackoverflow.com/questions/5625600/   -  person jogojapan    schedule 24.02.2013


Ответы (1)


f точно такой же, как

template <class ...Types> void f(Types... args, ...){}
//                                            ^^^^^

То есть, это просто старый добрый список параметров с переменным числом переменных из C. По историческим причинам его можно использовать без обычного ,, необходимого для разделения параметров. Отличие от g именно в этом параметре.

Обратите внимание, что никакие аргументы никогда не будут переданы в список вариативных параметров в стиле C, поскольку вариативные параметры в стиле C++ "проглотят" все аргументы.

person Xeo    schedule 24.02.2013