std::weak_ptr<T>::operator=
// 1)
weak_ptr& operator=( const weak_ptr& r ) noexcept;
// 2)
template< class Y >
weak_ptr& operator=( const weak_ptr<Y>& r ) noexcept;
// 3)
template< class Y >
weak_ptr& operator=( const shared_ptr<Y>& r ) noexcept;
// 4)
weak_ptr& operator=( weak_ptr&& r ) noexcept;
// 5)
template< class Y >
weak_ptr& operator=( weak_ptr<Y>&& r ) noexcept;
用 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++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
---|---|---|---|
以下改变行为的缺陷报告已追溯应用于先前发布的 C++ 标准。 | C++11 | weak_ptr 未启用移动语义 | 已启用 |