Единственная разница между boost::scoped_ptr<T>
и std::unique_ptr<T>
тем фактом, что std::unique_ptr<T>
имеет семантику перемещения, тогда как boost::scoped_ptr<T>
является просто интеллектуальным указателем get/reset?
Разница между boost:: scoped_ptr <T> и std:: unique_ptr <T>
Ответ 1
Нет, но это самая важная разница.
Другим существенным отличием является то, что unique_ptr
может иметь с ним объект деструктора, аналогично тому, как shared_ptr
может. В отличие от shared_ptr
, тип деструктора является частью типа unique_ptr
(способ, которым распределители являются частью типов контейнеров STL).
Ответ 2
unique_ptr
принадлежит объект исключительно. Он не копируется, но поддерживает передачу права собственности. Он был введен в качестве замены для устаревших auto_ptr
.
scoped_ptr
не является скопированным или подвижным. Это предпочтительный вариант, когда вы хотите убедиться, что указатели удалены при выходе из области действия.