std::experimental::optional::swap
From cppreference.com
< cpp | experimental | optional
| void swap( optional& other ); |
(library fundamentals TS) | |
Swaps the contents with those of other.
- If none of *this and
otherare in engaged states, the function has no effect.
- If only one of *this and
otheris in engaged state (let's call this objectinand the otherun), the contained value ofunis initialized by moving the contained value ofin, followed by destruction of the contained value ofin.inis in disengaged state andunis in engaged state afterwards.
- If both *this and
otherhave engaged states, the contained values are exchanged by calling swap(**this, *other).
Contents |
[edit] Parameters
| other | - | the optional object to exchange the contents with
|
[edit] Return value
(none)
[edit] Exceptions
noexcept specification:
noexcept(is_nothrow_move_constructible<T>::value &&
noexcept(swap(declval<T&>(), declval<T&>())))
noexcept(swap(declval<T&>(), declval<T&>())))
In the case of thrown exception, the states of the contained values of *this and other are determined by the exception safety guarantees of swap of type T or T's move constructor, whichever is called. For both *this and other, if the object was in engaged state, it is left in engaged state, and the other way round.
[edit] See also
| specializes the std::swap algorithm (function) |