Я пытаюсь научиться использовать умные указатели и понимать право собственности. Когда я передаю auto_ptr
функции по значению, функция получает исключительное право владения этим указателем. Поэтому, когда функция завершает работу, она удаляет указатель, который я ей передал.
Однако я получаю ошибку компиляции, когда пытаюсь сделать это с unique_ptr
, как будто назначение копирования отключено для unique_ptr
s. Передача unique_ptr
по ссылке, по-видимому, не передает права собственности, она просто дает функции ссылку на unique_ptr
.
Как мне заставить поведение auto_ptr
с передачей права собственности функции работать с unique_ptr
s? Я был бы признателен за ссылку на подробное руководство по unique_ptr
, поскольку до сих пор те, которые я читал, говорят только о auto_ptr
или говорят об интеллектуальных указателях, доступных в Boost, и, похоже, игнорируют unique_ptr
, потому что shared_ptr
покрывает его.