【发布时间】:2018-02-13 06:33:37
【问题描述】:
给定
template<typename ...Types>
void print(Types&& ...args) {
(cout << ... << args);
}
// ....
print(1, 2, 3, 4); // prints 1234
如何添加空格以便得到1 2 3 4?
更新:
正确答案:
((std::cout << args << ' ') , ...);
【问题讨论】:
-
这不是折叠表达式的用途。
-
好的,正式的问题来了:如何在函数参数包中间添加任意新项?
-
这不是函数参数包的用途;)我在开玩笑,但我有点认真。参数包是用于非常特定的工作的非常特定的工具,解包它们是非常有限的。当它们正是您需要的时候,它们会很好地工作,从而生成干净且易于理解的代码。当它们与您所需要的完全不同时,您就不会使用它们。但是当它们几乎满足你的需要时,它们就无法使用了。
-
你是对的,这是有道理的。定义是“函数参数包是接受零个或多个函数参数的函数参数”。我们不能在函数参数中间添加一些东西。
标签: c++17 fold-expression