std::experimental::unique_resource<R, D>::operator=
来自cppreference.com
< cpp | experimental | unique resource
unique_resource& operator=( unique_resource&& other ) noexcept(/* 见下文 */); |
(库基础 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。 - 最后,当且仅当赋值前 other 占有资源时,设置 *this 为占有它,并设置
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> 的公开成员函数) |