title: Atomic store throwing error
body: <p>I recently upgraded to a C++11 compatible compiler, and I was trying to update some code from boost to c++11 standards.  I ran into a problem when converting some code using atomic_store over.  Here is some simple test code that seems to be throwing a compiler error for me.</p>
  
  <pre><code>int main()
  {
      std::shared_ptr&lt;int&gt; m = std::make_shared&lt;int&gt;();
      *m = 1;
  
      std::shared_ptr&lt;int&gt; a =  std::make_shared&lt;int&gt;();
      *a = 2;
  
      std::atomic_store(&amp;m,std::move(a));
  
      std::cout &lt;&lt; *m &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p>the <code>std::atomic_store(&amp;m,std::move(a));</code> line is throwing a compiler error for me:</p>
  
  <pre><code>'std::shared_ptr&lt;int&gt;' is not derived from 'volatile std::atomic&lt;_ITp&gt;'
       std::atomic_store(&amp;m,std::move(a));
                                        ^
  </code></pre>
  
  <p>Has the way atomic_store changed when moving from boost to C++11?  Do I now need to create an atomic object of a shared pointer?</p>