关于这个问题
What are the evaluation order guarantees introduced by C++17?
有了这个规范
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf
这是规范中的文字
这是否意味着这两个表达式不再等效?
a << b;
operator<<(a, b);
由于第二个函数看起来像函数调用,因此参数中没有确定的评估顺序?
最佳答案
确实。 [expr.call]/5包含一个示例,专门解决了您的问题[强调我的]中涉及的两种情况之间的区别: