Now that shared_ptr is in tr1, what do you think should happen to the use of std::auto_ptr? They both have different use cases, but all use cases of
"Use shared_ptr everywhere" is a good default rule, and certainly a good starting point for teaching people about responsible use of smart pointers. However, it's not always the best choice.
If you don't need shared ownership, shared_ptr is overkill: it has to allocate a separate memory block for the reference count, which can impact performance, and it is less clear documentation-wise.
Personally, I use std::auto_ptr in many places where boost::scoped_ptr would also suffice: e.g. holding a heap-allocated object before ownership is transferred elsewhere, where the intervening operations might throw.
C++0x will have std::unique_ptr to complement std::shared_ptr as a better alternative to std::auto_ptr. When it becomes widely available I'll start using that.