title: Which kind of pointer do I use when?
body: <p>Ok, so the last time I wrote C++ for a living, <code>std::auto_ptr</code> was all the std lib had available, and <code>boost::shared_ptr</code> was all the rage. I never really looked into the other smart pointer types boost provided. I understand that C++11 now provides some of the types boost came up with, but not all of them. </p>
  
  <p>So does someone have a simple algorithm to determine when to use which smart pointer? Preferably including advice regarding dumb pointers (raw pointers like <code>T*</code>) and the rest of the boost smart pointers. (Something like <a href="https://stackoverflow.com/a/2139254/140719">this</a> would be great). </p>