В чем разница между двумя функциями?
template <class ...Types> void f(Types... args...){}
template <class ...Types> void g(Types... args){}
В чем разница между двумя функциями?
template <class ...Types> void f(Types... args...){}
template <class ...Types> void g(Types... args){}
f
точно такой же, как
template <class ...Types> void f(Types... args, ...){}
// ^^^^^
То есть, это просто старый добрый список параметров с переменным числом переменных из C. По историческим причинам его можно использовать без обычного ,
, необходимого для разделения параметров. Отличие от g
именно в этом параметре.
Обратите внимание, что никакие аргументы никогда не будут переданы в список вариативных параметров в стиле C, поскольку вариативные параметры в стиле C++ "проглотят" все аргументы.