title: In C++, What does "access" mean in the strict aliasing rule?
body: <p>3.10/10 says:</p>
  
  <blockquote>
    <p>If a program attempts to <strong>access</strong> the stored value of an object through a glvalue of other than one of the following types the behavior is undeﬁned:</p>
  </blockquote>
  
  <p>However, the term "access" is not defined anywhere. In this context does it mean <em>read</em>,  or <em>read or modify</em> ?</p>
  
  <hr>
  
  <p>In the C standard it is unambiguously defined as <em>read or modify</em>.  However in C++11 it seems to be used with different meanings at different times, for example:</p>
  
  <p>1.9/8:</p>
  
  <blockquote>
    <p>Access to volatile objects are evaluated strictly according to the rules of the abstract machine.</p>
  </blockquote>
  
  <p>Clearly this is meant to be <em>read or modify</em>, however in many other places such as 1.10/24:</p>
  
  <blockquote>
    <ul>
    <li>access or modify a volatile object, or</li>
    </ul>
  </blockquote>
  
  <p>it is used as if it only means <em>read</em>.</p>