std::auto_ptr<T>::operator=
auto_ptr& operator=( auto_ptr& r ) throw(); | (1) | (устарело в C++11) (удалено в C++17) |
template< class Y > auto_ptr& operator=( auto_ptr<Y>& r ) throw(); | (2) | (устарело в C++11) (удалено в C++17) |
auto_ptr& operator=( auto_ptr_ref<T> m ) throw(); | (3) | (устарело в C++11) (удалено в C++17) |
Заменяет управляемый объект на тот, который управляется r или m.
reset(r.release()). reset(r.release()). Y* должно быть неявно преобразуемо в T*.reset(m.release()). auto_ptr_ref — это тип, определяемый реализацией, который хранит ссылку на auto_ptr. std::auto_ptr неявно преобразуется в и из этого типа. Реализация может предоставить шаблон с другим именем или реализовать эквивалентную функциональность другими способами.Параметры
| r | - | другой auto_ptr для передачи права собственности на объект |
| m | - | объект типа, определяемого реализацией, который хранит ссылку на auto_ptr |
Возвращаемое значение
*this.
Примечания
Конструктор и оператор присваивания по копии из auto_ptr_ref предоставляются для возможности копирования и присваивания std::auto_ptr из безымянных временных значений. Поскольку его конструктор копирования и оператор присваивания по копии принимают аргумент как неконстантную ссылку, они не могут напрямую связать аргументы правой части. Однако может быть выполнено пользовательское преобразование (которое освобождает исходный auto_ptr), за которым следует вызов конструктора или оператора присваивания по копии, принимающих auto_ptr_ref по значению. Это раннее внедрение семантики перемещения.
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 127 | C++98 |
auto_ptr нельзя было присвоить из auto_ptr_ref | добавлен перегрузчик (3) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/auto_ptr/operator%3D