title: Why atomic overloads for shared_ptr exist
body: <p>Why are there are atomic overloads for <code>shared_ptr</code> as described <a href="http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic" rel="nofollow">here</a> rather than there being a specialization for <code>std::atomic</code> which deals with <code>shared_ptr</code>s.  Seems inconsistent with the object oriented patterns employed by the rest of the C++ standard library.. </p>
  
  <p>And just to make sure I am getting this right, when using <code>shared_ptr</code>s to implement the <a href="https://en.wikipedia.org/wiki/Read-copy-update" rel="nofollow">read copy update idiom</a> we need to do all accesses (reads and writes) to shared pointers through these functions right?</p>