Я использую std::auto_ptr
умеренно часто, чтобы обеспечить исключительную безопасность. То есть для предотвращения утечки памяти в случае, если часть метода выдает исключение.
Например:
Foo &Container::addFoo(
const std::string &name
)
{
// The post conditions of the method require that the new Foo
// has been added to this container, but the addition method
// may throw exceptiona
std::auto_ptr< Foo > foo(new Foo(name));
foo->twiddle();// may throw
this->addFoo(*foo);// record reference. May throw
return *foo.release();
}
Отредактировано:
пояснил, что this->addFoo(*foo)
записывает ссылку.