UPDATE: Этот ответ был написан в 2010 году, и, как ожидалось, std::auto_ptr
был устаревшим. Совет полностью актуален.
В C++0x std::auto_ptr
будет устаревшим в пользу std::unique_ptr
. Выбор интеллектуального указателя будет зависеть от вашего случая использования и ваших требований, при этом std::unique_ptr
с семантикой перемещения для единственного владения может использоваться внутри контейнеров (используя семантику перемещения) и std::shared_ptr
, когда владение является общим.
Вы должны стараться использовать интеллектуальный указатель, который лучше всего подходит к ситуации, выбор правильного типа указателя дает другим программистам представление о вашем проекте.
Нет, не рекомендуется. Может быть, если C ++ 0x когда-нибудь будет принят. И его реально всегда поддержат. Я не верю, что какая-либо устаревшая функция когда-либо была исключена из реальных реализаций C ++.
Да, с сегодняшнего дня auto_ptr
будет устаревшим в C++0x и вам следует использовать unique_ptr
вместо него. Из последнего проекта стандарта (n3035), раздел D.9
Шаблон класса
auto_ptr
является устаревшим. [ Примечание: Шаблон классаunique_ptr
(20.9.10) обеспечивает лучшее решение. -конец примечания ]
Пока стандарт не ратифицирован, всегда есть вероятность, что комитет пересмотрит это решение, хотя я считаю это маловероятным для данного решения.