Я пытаюсь понять, как использовать пакет параметров в C ++, и я пришел к нескольким примерам, меня смутило размещение оператора pack ...
, иногда это до имени пакета, иногда после:
template<typename... Ts> void func(Ts... args){
const int size = sizeof...(args) + 2; // <====== before
int res[size] = {1,args...,2}; // <====== after
// since initializer lists guarantee sequencing, this can be used to
// call a function on each element of a pack, in order:
int dummy[sizeof...(Ts)] = { (std::cout << args, 0)... };
}
Иногда это внутри круглых скобок, иногда за пределами:
Class c1(&args...);
::new((void *)p) U(std::forward<Args>(args)...) // <==== outside
Есть ли общее правило использования пакетов?