В дополнение к посту Джона.
не следует использовать контейнеры для хранения умных указателей если ты не знаешь как ТОЧНО именно ЭТА реализация будет себя вести при копировании. std::auto_ptr лучше не использовать это точно а вот boost::shared_ptr будет вести себя в контейнере адекватно но по причине подсчета ссылок чего не делает auto_ptr
что же касается расхолаживания у в своей рабое активно применю и auto_ptr и shared_ptr(в зависимости от разных нюансов) должен заметить не разу не было ошибок связанных со SP
правда используются они у нас в основном для создание классов реализующих интерфейс и создаются в конструкторе интерфеса а удаляются в деструкторе интерфейса(не явно)
// File: interface.hpp
class impl;
struct interface{
boost::shared_ptr<impl> pImpl_;
interface();
void use();
}
// File: impl.cpp
#include "interface.hpp"
interface::interface():pImpl_(new impl()){};
void interface::use()
{
impl->use();
}