std::experimental::optional<T>::swap
来自 cppreference.com
< cpp | experimental | optional
void swap( optional& other ) noexcept(/* see below */); |
(库基础 TS) | |
将内容与 other 的内容交换。
- 如果 *this 和 other 都没有包含值,则该函数没有效果。
- 如果 *this 和 other 中只有一个包含值(我们称这个对象为
in
,另一个为un
),则un
的包含值将从 std::move(*in) 直接初始化,然后通过 in.val->T::~T() 销毁in
的包含值。调用此函数后,in
不包含值,un
包含值。
内容 |
[编辑] 参数
other | - | 要交换内容的 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 算法 (函数) |