title: std::string getting (char *) instead of (const char *)
body: <p><code>std::string.c_str()</code> returns a (const char *) value. I Googled and found that I can do the following:</p>
  
  <pre><code>std::string myString = "Hello World";
  char *buf = &amp;myString[0];
  </code></pre>
  
  <p>How is this possible? <code>&amp;myString[0]</code> is an object of type <code>std::string</code>, so how can this work?</p>