title: Why does shared_ptr have a move constructor
body: <p>In C++11 <code>std::shared_ptr</code> has a move constructor and move assignment operator.</p>
  
  <p>Is there a reason why this is needed, i.e. would any programs using it behave differently if there were only the copy constructor and assignment operators?</p>
  
  <p>It seems that the only effect of it is that the extra increment and later decrement of the reference counter is avoided. </p>