replace std::auto_ptr with std::unique_ptr