| copy (1) | weak_ptr& operator= (const weak_ptr& x) noexcept; template <class U> weak_ptr& operator= (const weak_ptr<U>& x) noexcept; | 
|---|---|
| from shared_ptr (2) | template <class U> weak_ptr& operator= (const shared_ptr<U>& x) noexcept; | 
| copy (1) | weak_ptr& operator= (const weak_ptr& x) noexcept; template <class U> weak_ptr& operator= (const weak_ptr<U>& x) noexcept; | 
|---|---|
| from shared_ptr (2) | template <class U> weak_ptr& operator= (const shared_ptr<U>& x) noexcept; | 
| move (3) | weak_ptr& operator= (weak_ptr&& x) noexcept; template <class U> weak_ptr& operator= (weak_ptr<U>&& x) noexcept; | 
|  |  | 
| *sp1: 10 *sp2: 10 |