摺疊表達式似乎是將函數應用於元組的每個元素的好方法。但是,如果應用函數有副作用,那麼函數調用的順序可能是一個重要的問題。摺疊表達式的評估順序
考慮:
#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