title: What is the meaning of this piece of Standardese about shared_ptr's use_count()?
body: <p>While trying to wrap my head around the problem shown in <a href="https://stackoverflow.com/questions/28111666/why-is-stdweak-ptrexpired-optimized-away?noredirect=1#comment44599229_28111666">this question</a> I found myself stuck on the following sentence from [util.smartptr.shared]/4:</p>
  
  <blockquote>
    <p>[...] Changes in <code>use_count()</code> do not reflect modifications that can introduce data races.</p>
  </blockquote>
  
  <p>I don't understand how I should read that, and what conclusions shall I draw. 
  Here are a few interpretations:</p>
  
  <ul>
  <li>Invoking <code>use_count()</code> does not introduce data races (but this should be guaranteed by the <code>const</code>-ness of that function alone, together with the corresponding library-wide guarantees)</li>
  <li>The value returned by <code>use_count()</code> is not influenced by ("does not reflect"?) the outcome of operations that require atomicity or synchronization (but what are these relevant operations?)</li>
  <li><code>use_count()</code> is executed atomically, but without preventing reordering by the CPU or the compiler (i.e. without sequential consistency, but then why not mentioning the particular model?)</li>
  </ul>
  
  <p>To me, none of the above seems to follow from that sentence, and I am at loss trying to interpret it.</p>