title: C++ operator order evaluation
body: <p>I have the code and it gives me a compilation error.
  I expected left-right operator order evaluation. The result of 'name += ":"' is string, but it looks like it evaluated ":" + "O" first. I didn't find any clear explanation why.</p>
  
  <pre><code>#include &lt;string&gt;
  
  int main()
  {
    std::string name("HELL");
    name += ":" + "O";
    std::cout &lt;&lt; "Hello, " &lt;&lt; name &lt;&lt; "!\n";
  }
  </code></pre>