std::auto_ptr is broken in VC++ 8 (which is what we use at work). My main gripe with it is that it allows auto_ptr x = new T();, which of cour
std::auto_ptr
auto_ptr x = new T();
Use boost::shared_ptr/boost::scoped_ptr. It will be the preferred smart pointer in upcoming C++ standards (is in TR1 already).
Edit: Please find a related discussion here: Idiomatic use of std::auto_ptr or only use shared_ptr?