r0n*_*0ng 11 c++ templates variadic-templates fold-expression c++17
在C++ 17中,fold表达式可用,因此要打印参数,我们可以使用
#define EOL '\n'
template<typename ...Args>
void output_argus(Args&&... args)
{
(cout << ... << args) << EOL;
}
int main()
{
output_argus(1, "test", 5.6f);
}
Run Code Online (Sandbox Code Playgroud)
有输出
1test5.6
如果我想使用fold表达式'\n'为每个元素添加额外的字符以获得以下结果,该怎么办?
1
test
5.6
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?如果有,怎么样?
max*_*x66 13
如果我想使用fold表达式为每个元素添加额外字符'\n'以获得以下结果,该怎么办?
您可以使用逗号运算符的强大功能
((std::cout << args << std::endl), ...);
Run Code Online (Sandbox Code Playgroud)
或者,正如Quentin所建议的那样(感谢),正如您所问,您可以简单地使用\n而不是std::endl(避免多次刷新流)
((std::cout << args << '\n'), ...);
Run Code Online (Sandbox Code Playgroud)