Пространства имён
Варианты
Действия

std::auto_ptr<T>::operator=

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
<tbody> </tbody>
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.

1) Эффективно вызывает reset(r.release()).
2) Эффективно вызывает reset(r.release()). Y* должен быть неявно преобразован в T*.
3) Эффективно вызывает reset(m.release()). auto_ptr_ref это тип, определяемый реализацией, который содержит ссылку на auto_ptr. std::auto_ptr неявно преобразуется в и из этого типа. В реализации разрешено давать шаблону другое имя или реализовывать эквивалентную функциональность другими способами.

Параметры

r другой auto_ptr из которого передать право владения объектом
m объект типа, определяемого реализацией, который содержит ссылку на auto_ptr

Возвращаемое значение

*this.

Примечание

Конструктор и оператор присваивания копированием из auto_ptr_ref позволяют создавать копии и присваивать std::auto_ptr из безымянных временных объектов. Поскольку его конструктор копирования и оператор присваивания копированием принимают аргумент как неконстантную ссылку, они не могут напрямую связывать аргументы rvalue. Однако может быть выполнено пользовательское преобразование (которое освобождает исходный auto_ptr), за которым следует вызов конструктора или оператора присваивания копированием, которые принимают auto_ptr_ref по значению. Это ранняя реализация семантики перемещения.

Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 127 C++98 auto_ptr нельзя было присвоить из auto_ptr_ref добавлена перегрузка (3)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.