Разница между boost:: scoped_ptr <T> и std:: unique_ptr <T>

Единственная разница между boost::scoped_ptr<T> и std::unique_ptr<T> тем фактом, что std::unique_ptr<T> имеет семантику перемещения, тогда как boost::scoped_ptr<T> является просто интеллектуальным указателем get/reset?

Ответ 1

Нет, но это самая важная разница.

Другим существенным отличием является то, что unique_ptr может иметь с ним объект деструктора, аналогично тому, как shared_ptr может. В отличие от shared_ptr, тип деструктора является частью типа unique_ptr (способ, которым распределители являются частью типов контейнеров STL).

Ответ 2

unique_ptr принадлежит объект исключительно. Он не копируется, но поддерживает передачу права собственности. Он был введен в качестве замены для устаревших auto_ptr.

scoped_ptr не является скопированным или подвижным. Это предпочтительный вариант, когда вы хотите убедиться, что указатели удалены при выходе из области действия.