【发布时间】:2018-02-13 19:49:35
【问题描述】:
折叠表达式似乎是将函数应用于元组的每个元素的好方法。但是,如果应用的函数有副作用,函数调用的顺序可能是一个重要的问题。
考虑:
#include <iostream>
template<typename... Ts>
void printStuff(Ts... args)
{
( ([](auto&& v) { std::cout << v << " "; })(args), ... );
std::cout << '\n';
}
int main()
{
printStuff("hello", 42, 1.5f);
// expected output: hello 42 1.5
}
但是这里是否保证了 lambdas 的评估顺序,还是我最终可以在输出中翻转值?如果我使用不同的运算符将命令链接在一起,答案会改变吗?
【问题讨论】:
-
你使用逗号操作符,它是有序的。
标签: c++ c++17 fold-expression