折叠表达式似乎是将函数应用于元组的每个元素的好方法。但是,如果应用函数有副作用,那么函数调用的顺序可能是一个重要的问题。折叠表达式的评估顺序
考虑:
#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
}
但是,在这里保证的lambda表达式的评估顺序还是可以最终在输出中翻转值?如果我使用不同的操作员来一起链接命令,答案会改变吗?
您使用逗号运算符,该运算符已排序。 – Jarod42