std::experimental::unique_resource<R, D>::operator=
< cpp | experimental | unique resource
unique_resource& operator=( unique_resource&& other ) noexcept(/*see below*/); |
(库基础 TS v3) | |
移动赋值运算符。以 other
的被管理资源替换被管理资源。
正式而言,令 RS
为存储的资源柄的类型:
- 首先,调用 reset() 释放当前占有的资源,若存在。
- 然后以
other
的存储的资源柄与删除器赋值存储的资源柄与删除器。若 std::is_nothrow_move_assignable_v<RS> 或 std::is_nothrow_move_assignable_v<D> 为 true ,则分别应用std::move
到other
的存储的资源柄或删除器。首先执行存储的资源柄的赋值,除非 std::is_nothrow_move_assignable_v<D> 为 false 而 std::is_nothrow_move_assignable_v<RS> 为 true 。 - 最后,设置 *this 为占有资源当且仅当赋值前
other
占有它,并设置other
为不占有资源。
若 std::is_nothrow_move_assignable_v<RS> 为 true ,则 RS
应当满足可移动赋值 (MoveAssignable) 要求;否则 RS
应当满足可复制赋值 (CopyAssignable) 要求。若 std::is_nothrow_move_assignable_v<D> 为 true ,则 D
应当满足可移动赋值 (MoveAssignable) 要求;否则 D
应当满足可复制赋值 (CopyAssignable) 要求。不满足上述要求导致未定义行为。
参数
other | - | 将要被转移所有权的资源包装 |
返回值
*this
异常
任何复制赋值中抛出的异常。
noexcept 规定:
noexcept(std::is_nothrow_move_assignable_v<RS> && std::is_nothrow_move_assignable_v<D>)
注解
若复制成员抛出异常,则此机制置 other
于不变并使 *this 在被释放状态。
示例
本节未完成 原因:暂无示例 |
参阅
释放或替换被管理的资源 (公开成员函数) | |
为unique_ptr 赋值 ( std::unique_ptr<T,Deleter> 的公开成员函数) |