Namespaces
Variants
Views
Actions

cpp/experimental/optional/swap

From cppreference.com
< cpp‎ | experimental‎ | optional
Revision as of 07:11, 9 June 2013 by P12 (Talk | contribs)

Template:cpp/utility/optional/title Template:cpp/utility/optional/navbar

void swap( optional& other );
(since C++14)

Swaps the contents with those of other.

  • If none of *this and other are in engaged states, the function has no effect.
  • If only one of *this and other is in engaged state (let's call this object in and the other un), the contained value of un is initialized by moving the contained value of in, followed by destruction of the contained value of in. in is in disengaged state and un is in engaged state afterwards.
  • If both *this and other have engaged states, the contained values are exchanged by calling swap(**this, *other).

Contents

Parameters

other - the optional object to exchange the contents with

Return value

(none)

Exceptions

noexcept specification:  
noexcept(is_nothrow_move_constructible<T>::value &&
           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.

See also

Template:cpp/utility/optional/dsc swap2