Namespaces
Variants

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

From cppreference.net
void swap ( optional & other ) noexcept ( /* siehe unten */ ) ;
(Library Fundamentals TS)

Tauscht die Inhalte mit denen von other .

  • Wenn weder * this noch other einen Wert enthalten, hat die Funktion keine Auswirkung.
  • Wenn nur eines von * this und other einen Wert enthält (nennen wir dieses Objekt in und das andere un ), wird der enthaltene Wert von un aus std :: move ( * in ) direkt initialisiert , gefolgt von der Zerstörung des enthaltenen Werts von in wie durch in. val - > T :: ~T ( ) . Nach diesem Aufruf enthält in keinen Wert und un enthält einen Wert.
  • Wenn sowohl * this als auch other Werte enthalten, werden die enthaltenen Werte durch Aufruf von using std:: swap ; swap ( ** this, * other ) ausgetauscht. T -Lvalues müssen Swappable erfüllen.

Inhaltsverzeichnis

Parameter

other - das optional Objekt, mit dem die Inhalte ausgetauscht werden sollen

Rückgabewert

(keine)

Exceptions

noexcept Spezifikation:
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )

Im Falle einer ausgelösten Ausnahme werden die Zustände der enthaltenen Werte von * this und other durch die Exception-Safety-Garantien von swap des Typs T oder T 's Move-Konstruktor bestimmt, je nachdem welcher aufgerufen wird. Für sowohl * this als auch other gilt: Wenn das Objekt einen Wert enthielt, bleibt es mit einem Wert enthalten, und umgekehrt.

Siehe auch

spezialisiert den std::swap Algorithmus
(Funktion)