Каква е разликата между двете функции?
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++ ще „погълнат“ всички аргументи.