我想在向量中插入与可变参数模板函数的参数一样多的零(即向量中的参数数量为零)。我正在尝试使用折叠表达式来实现这一点,并且在使用(vec.push_back(zeroHelper(args)), ...);
.
我不明白的是:为什么当我尝试通过“展开”到初始化器列表中直接初始化向量时它不起作用,如下所示:
std::vector<int> vec = { (zeroHelper(args), ...) };
?
完整源代码:
template <typename T>
T zeroHelper (T a) { return T{0}; }
template<typename ...Args>
void printer(Args&&... args) {
std::vector<int> vec; // = { (zeroHelper(args), ...) };
(vec.push_back(zeroHelper(args)), ...);
for (auto i : vec) {
std::cout << i << '\n';
}
}
int main()
{
printer(1, 2, 3, 4);
return 0;
}
预期输出:
0
0
0
0
使用初始化列表方法输出:
0
为什么?