И CAutoPtr
, и auto_ptr
обеспечивают семантику интеллектуальных указателей, включая семантику передачи прав собственности. CAutoPtr
- это класс ATL, созданный с использованием COM. Это нестандартное расширение для конкретной ОС. auto_ptr
с другой стороны - это стандартный C ++. Если вы хотите использовать контейнер с такими объектами, вы должны использовать CAutoPtrArray
или CAutoPtrList
.
Важно отметить, что есть нечто, называемое auto_ptr_ref
, которое позволяет вам возвращать auto_ptr
s в качестве возвращаемого значения. С CAutoPtr
.
такого не бывает.
auto_ptr
устарела в C ++ 0x. Используйте unique_ptr
, если вам нужно: вы можете использовать их в контейнерах, учитывающих перемещение, а также получить некоторую безопасность от небезопасных неявных перемещений l-значений.