std::auto_ptr<T>::auto_ptr
Материал из cppreference.com
<tbody>
</tbody>
explicit auto_ptr( X* p = 0 ) throw(); |
(1) | (устарело в C++11) (удалено в C++17) |
auto_ptr( auto_ptr& r ) throw(); |
(2) | (устарело в C++11) (удалено в C++17) |
template< class Y > auto_ptr( auto_ptr<Y>& r ) throw(); |
(3) | (устарело в C++11) (удалено в C++17) |
auto_ptr( auto_ptr_ref<X> m ) throw(); |
(4) | (устарело в C++11) (удалено в C++17) |
Создаёт auto_ptr из указателя, ссылающегося на управляемый объект.
1) Создаёт
auto_ptr с указателем p.2) Создаёт
auto_ptr с указателем, хранящимся в r. Для получения права собственности на объект вызывается r.release().3) То же, что (2).
Y* должно быть неявно преобразовано в T*.4) Создаёт
auto_ptr с указателем, хранящимся в экземпляре auto_ptr, на который ссылается m. Для auto_ptr p, который содержит m, вызывается p.release(), чтобы получить право владения объектом.auto_ptr_ref это тип, определяемый реализацией, который содержит ссылку на auto_ptr. std::auto_ptr неявно преобразуется в и присваивается из этого типа. В реализации разрешено предоставлять шаблону другое имя или реализовывать эквивалентную функциональность другими способами.Параметры
| p | — | указатель на объект для управления |
| r | — | другой auto_ptr из которого передавать право владения объектом
|
| m | — | тип, определяемый реализацией, который содержит ссылку на auto_ptr
|
Примечание
Конструктор и оператор присваивания копированием из auto_ptr_ref позволяют создавать копии и присваивать std::auto_ptr из безымянных временных объектов. Поскольку его конструктор копирования и оператор присваивания копированием принимают аргумент как неконстантную ссылку, они не могут напрямую связывать аргументы rvalue. Однако может быть выполнено пользовательское преобразование (которое освобождает исходный auto_ptr), за которым следует вызов конструктора или оператора присваивания копированием, которые принимают auto_ptr_ref по значению. Это ранняя реализация семантики перемещения.