关于这个问题

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包含一个示例,专门解决了您的问题[强调我的]中涉及的两种情况之间的区别:

10-06 01:54