title: atomic_store of shared_ptr of interface
body: <p>I am trying to set the value of a shared_ptr in an atomic way:</p>
  
  <pre><code>shared_ptr&lt;Base&gt; a = std::make_shared&lt;Derived&gt;();
  ....
  shared_ptr&lt;Base&gt; b;
  std::atomic_store(&amp;b,a); // Error here
  </code></pre>
  
  <p>I got the error message "'std::shared_ptr&lt; Base >' is not derived from 'volatile std::atomic&lt;_ITp>'" </p>
  
  <p>How to fix this? Thanks.</p>