std::experimental::unique_resource<R, D>::operator=
来自 cppreference.com
< 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,则分别对other 的存储的资源句柄或删除器应用
std::move
。存储的资源句柄的赋值首先执行,除非std::is_nothrow_move_assignable_v<D> 为false 且std::is_nothrow_move_assignable_v<RS> 为true。 - 最后,当且仅当other 在赋值之前拥有资源时,并将other 设置为不拥有资源,则将*this 设置为拥有该资源。
如果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> 的公共成员函数) |