Namespaces
Variants

std::experimental::optional<T>:: swap

From cppreference.net
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 & > ( ) ) ) )

在抛出异常的情况下, * this other 所含值的状态由类型 T swap 操作或 T 的移动构造函数(取决于实际调用哪个)的异常安全保证决定。对于 * this other ,若对象原本包含值,则异常后仍包含值;反之亦然。

参见

特化 std::swap 算法
(函数)