# std::weak_ptr<T>::operator=

< cpp‎ | memory‎ | weak ptr

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++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
LWG 2315 | C++11 | 移动语义未对 `weak_ptr` 启用 | 已启用

### 参阅

(构造函数) | 构造新的`weak_ptr` (公开成员函数)
swap | 交换被管理对象 (公开成员函数)