std::experimental::optional<T>:: swap
From cppreference.net
<
cpp
|
experimental
|
optional
|
void
swap
(
optional
&
other
)
noexcept
(
/* see below */
)
;
|
(库基础技术规范) | |
与 other 交换内容。
- 如果 * this 和 other 均不包含值,则该函数不产生任何效果。
-
如果仅有一个对象包含值(称此对象为
in,另一个为un),则使用 std :: move ( * in ) 对un的包含值进行 直接初始化 ,随后通过 in. val - > T :: ~T ( ) 的方式销毁in的包含值。此调用后,in不再包含值,un包含值。
-
若
*
this
与
other
均含值,则通过调用
using
std::
swap
;
swap
(
**
this,
*
other
)
交换所含值。
T类型的左值必须满足 可交换 要求。
目录 |
参数
| 其他 | - |
用于交换内容的
optional
对象
|
返回值
(无)
异常
noexcept
规范:
noexcept
(
std::
is_nothrow_move_constructible
<
T
>
::
value
&&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )
在抛出异常的情况下,
*
this
和
other
所含值的状态由类型
T
的
swap
操作或
T
的移动构造函数(取决于实际调用哪个)的异常安全保证决定。对于
*
this
和
other
,若对象原本包含值,则异常后仍包含值;反之亦然。
参见
|
特化
std::swap
算法
(函数) |