I believe that it's best-practice is to substitute all uses of std::auto_ptr by boost::scoped_ptr unless std::tr1::shared_ptr meets the requirements better, if you don't mind using Boost. On the other hand, it was surely intentional that scoped_ptr wasn't included in TR1.