title: c++17 evaluation order with operator overloading functions
body: <p>Regarding this question</p>
  
  <p><a href="https://stackoverflow.com/questions/38501587/what-are-the-evaluation-order-guarantees-introduced-by-c17">What are the evaluation order guarantees introduced by C++17?</a></p>
  
  <p>With this specification</p>
  
  <p><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf" rel="noreferrer">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf</a></p>
  
  <p>And this text from the specification</p>
  
  <blockquote>
    <p>Furthermore, we suggest the following additional rule: <strong>the order of
    evaluation of an expression involving an overloaded operator is
    determined by the order associated with the corresponding built-in
    operator, not the rules for function calls.</strong></p>
  </blockquote>
  
  <p>Does this mean that these two expressions are no longer equivalent?</p>
  
  <pre><code>a &lt;&lt; b;
  operator&lt;&lt;(a, b);
  </code></pre>
  
  <p>As the second one looks like a function call, hence there is no guaranteed evaluation order in the parameters?</p>