title: Difference in c_str function specification between C++03 and C++11
body: <p>In the C++ <a href="http://en.cppreference.com/w/cpp/string/basic_string/c_str" rel="nofollow noreferrer">reference</a> of <code>c_str()</code> in <code>std::string</code> the following appears:</p>
  
  <blockquote>
    <p><strong>Return value</strong><br>
    Pointer to the underlying character storage.<br>
    <code>data()[i] == operator[](i) for every i in [0, size())</code> (until C++11)<br>
    <code>data() + i == &amp;operator[](i) for every i in [0, size()]</code>   (since C++11)</p>
  </blockquote>
  
  <p>I do not understand the difference between the two, except for the range increase by one element since C++11.</p>
  
  <p>Isn't the former statement <code>data()[i] == operator[](i)</code> also true for the latter?</p>