我想在向量中插入与变量模板函数的参数一样多的零(即,在向量中参数数目零)。我正在尝试使用折叠表达式来实现这一点,并且在使用(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;
}
预期输出:
0000
使用初始化列表方法输出:
0
为什么?
我想在向量中插入与变量模板函数的参数一样多的零(即向量中参数的零个数)。我正在尝试使用折叠表达式来...
因为