https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91415
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I think this is P0145R3 Refining Expression Evaluation Order for Idiomatic C++ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf which says 4. A SOLUTION In summary, the following expressions are evaluated in the order a, then b, then c, then d: 1. a.b 2. a->b 3. a->*b 4. a(b1, b2, b3) 5. b @=a 6. a[b] 7. a << b 8. a >> b