std::experimental::unique_resource<R, D>::operator=
来自 cppreference.cn
< 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) 的要求。未能满足上述要求将导致未定义行为。
目录 |
[编辑] 参数
其他 | - | 资源包装器,所有权将从其转移 |
[编辑] 返回值
*this
[编辑] 异常
复制赋值中抛出的任何异常。
noexcept 规范:
noexcept(std::is_nothrow_move_assignable_v<RS> && std::is_nothrow_move_assignable_v<D>)
[编辑] 注解
如果成员的复制抛出异常,此机制会使 other 保持不变,并将 *this 置于已释放状态。
[编辑] 示例
本节不完整 原因:无示例 |
[编辑] 参阅
处置或替换所管理的资源 (public member function) | |
赋值 unique_ptr ( std::unique_ptr<T,Deleter> 的公共成员函数) |