title: The case where c=a[b++] is NOT equal to c=a[b]; b=b+1;
body: <p>I almost pulled all of my hair. The code speaks for itself:</p>
  
  <pre><code>const float* const vertices = ...;
  unsigned int j = 0;
  
          pair&lt;float, float&gt; poor;
          poor.first = vertices[j];
          poor.second = vertices[j + 1];
          CCLOG("WIT0 %f,%f", poor.first, poor.second);
          poor.first = vertices[j++];
          poor.second = vertices[j++];
          CCLOG("WIT1 %f,%f", poor.first, poor.second);
  
          j -= 2;
  
          poor = pair&lt;float, float&gt;(vertices[j], vertices[j + 1]);
          CCLOG("WIT2 %f,%f", poor.first, poor.second);
          poor = pair&lt;float, float&gt;(vertices[j++], vertices[j++]);
          CCLOG("WIT3 %f,%f", poor.first, poor.second);
  </code></pre>
  
  <p>The result is:</p>
  
  <pre><code>WIT0 -38.063835,32.743618
  WIT1 -38.063835,32.743618
  WIT2 -38.063835,32.743618
  WIT3 32.743618,-38.063835 &lt;- What about that, eh?
  </code></pre>
  
  <p>I always, always thought code is evaluated from left to right. Seems this isn't the case here.
  Code run on Visual Studio 2015, Win32 Debug mode.</p>
  
  <p>Can someone tell me if this is implementation specific and not addressed yet by the C++ guide?</p>