std::weak_ptr<T>::operator=
Материал из cppreference.com
<tbody>
</tbody>
weak_ptr& operator=( const weak_ptr& r ) noexcept; |
(1) | (начиная с C++11) |
template< class Y > weak_ptr& operator=( const weak_ptr<Y>& r ) noexcept; |
(2) | (начиная с C++11) |
template< class Y > weak_ptr& operator=( const shared_ptr<Y>& r ) noexcept; |
(3) | (начиная с C++11) |
weak_ptr& operator=( weak_ptr&& r ) noexcept; |
(4) | (начиная с C++11) |
template< class Y > weak_ptr& operator=( weak_ptr<Y>&& r ) noexcept; |
(5) | (начиная с C++11) |
Заменяет управляемый объект объектом, управляемым r. Объект используется совместно с r. Если r не управляет никаким объектом, *this также не управляет никаким объектом.
1-3) Эквивалентно
std::weak_ptr<T>(r).swap(*this).4,5) Эквивалентно
std::weak_ptr<T>(std::move(r)).swap(*this).Параметры
| r | — | умный указатель для совместного использования объекта |
Возвращаемое значение
*this
Примечание
Реализация может соответствовать требованиям без создания временного объекта weak_ptr.
Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 2315 | C++11 | семантика перемещения не была доступна для weak_ptr
|
доступна |
Смотрите также
создаёт новый weak_ptr (public функция-элемент) | |
| меняет местами управляемые объекты (public функция-элемент) |