std::experimental::unique_resource<R, D>:: operator=
|
unique_resource
&
operator
=
(
unique_resource
&&
other
)
noexcept ( /*see below*/ ) ; |
(库基础技术规范 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 在赋值前拥有资源时,将 * 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
异常
复制赋值操作中抛出的任何异常。
注释
如果成员的复制操作抛出异常,该机制会保持 other 完好无损,并使 * this 处于已释放状态。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
释放或替换被管理的资源
(公开成员函数) |
|
赋值
unique_ptr
(
std::unique_ptr<T,Deleter>
的公开成员函数)
|