Передача права собственности на функцию с помощью std ::unique _ptr

Я пытаюсь научиться использовать умные указатели и понимать право собственности. Когда я передаю auto_ptrфункции по значению, функция получает исключительное право владения этим указателем. Поэтому, когда функция завершает работу, она удаляет указатель, который я ей передал.

Однако я получаю ошибку компиляции, когда пытаюсь сделать это с unique_ptr, как будто назначение копирования отключено для unique_ptrs. Передача unique_ptrпо ссылке, по-видимому, не передает права собственности, она просто дает функции ссылку на unique_ptr.

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

9
задан newprogrammer 16 July 2012 в 00:29
поделиться