Поскольку в
std::vector<int> vec = { (zeroHelper(args), ...) };
круглые скобки возвращают только один элемент, последний; оператор запятой отбрасывает предыдущее.
Вы должны написать
std::vector<int> vec = { zeroHelper(args) ... };
, чтобы сохранить все элементы.
В
(vec.push_back(zeroHelper(args)), ...);
скобки активируют При сворачивании запятая отбрасывает все элементы, кроме последнего, но операция push_back()
применяется к vec
для каждого args...
элемента.
Также обратите внимание, что, используя свойство отбрасывания оператора запятой, вы zeroHelper()
вообще не нужно
Вы можете написать
std::vector<int> vec { ((void)args, 0)... };
или
(vec.push_back(((void)args, 0)), ...);