title: std::atomic address after store
body: <p>I can't seem to get the address of an atomic object after a store.</p>
  <p>e.g.</p>
  <pre><code>std::atomic&lt;int&gt; i;
  std::atomic&lt;int&gt;* p = &amp;++i; // doesn't work
  auto* p = &amp;++i; // doesn't work
  // below works:
  ++i;
  auto* p = &amp;i;
  </code></pre>
  <p>What's happening here and why?</p>
  <p>To clarify: I know it returns an r-value. Why doesn't it return the original object, <code>this</code>? Is this a purposeful design choice or was it an oversight?</p>
  <p>More specifically, what's happening under-the-hood for this requirement?</p>