std::auto_ptr f() { std::auto_ptr ptr(new ClassA); // ptr становится владельцем ... // нового объекта return ptr; // Право владения возвращается на сторону вызова } void g() { std::auto_ptr p; for (int i=0; i<10; ++i) { p = f(); // p становится владельцем возвращаемого объекта // (предыдущий возвращенный объект уничтожается). ... } } // Удаление последнего объекта, принадлежащего p