std::experimental::unique_resource<R, D>::operator=
来自cppreference.com
| |
(库基础 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> 的公开成员函数) |