title: Compilers and argument order of evaluation in C++
body: <p>Okay, I'm aware that the standard dictates that a C++ implementation may choose in which order arguments of a function are evaluated, but are there any implementations that actually 'take advantage' of this in a scenario where it would actually affect the program?</p>
  
  <p>Classic Example:</p>
  
  <pre><code>int i = 0;
  foo(i++, i++);
  </code></pre>
  
  <p>Note: I'm not looking for someone to tell me that the order of evaluation can't be relied on, I'm well aware of that. I'm only interested in whether any compilers actually do evaluate out of a left-to-right order because my guess would be that if they did lots of poorly written code would break (rightly so, but they would still probably complain).</p>