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,则对 other 的存储资源句柄或删除器应用
std::move
。存储的资源句柄的赋值首先执行,除非 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> 的公开成员函数) |