Мы все знаем, что указатели RAW необходимо обернуть в виде смарт-указателя, чтобы получить безопасное управление безопасностью Exception. Но когда дело доходит до контейнеров указателей, проблема становится более тернистой.
Контейнеры std настаивают на том, что содержащийся объект можно копировать, поэтому это исключает использование std:: auto_ptr, хотя вы все равно можете использовать boost:: shared_ptr и т.д.
Но есть также несколько форсированных контейнеров, специально предназначенных для безопасного хранения указателей:
См. Библиотека контейнеров-указателей
Вопрос: В каких условиях я должен использовать ptr_containers над контейнером smart_pointers?
boost::ptr_vector<X>
or
std::vector<boost::shared_ptr<X> >