Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
 
void swap( optional& other ) noexcept(/* siehe unten */);
(library fundamentals TS)

Tauscht den Inhalt mit dem 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 Wertes von in, als ob durch in.val->T::~T(). Nach diesem Aufruf enthält in keinen Wert, un enthält einen Wert.
  • Wenn sowohl *this als auch other Werte enthalten, werden die enthaltenen Werte durch den Aufruf von using std::swap; swap(**this, *other) ausgetauscht. T-Lvalues müssen Swappable erfüllen.

Inhalt

[bearbeiten] Parameter

Sonstiges - das optional-Objekt, mit dem der Inhalt ausgetauscht werden soll

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Ausnahmen

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

Im Falle einer Ausnahme werden die Zustände der enthaltenen Werte von *this und other durch die Ausnahmesicherheitsgarantien von swap des Typs T oder des Move-Konstruktors von T bestimmt, je nachdem, welcher aufgerufen wird. Sowohl für *this als auch für other gilt: Wenn das Objekt einen Wert enthielt, enthält es weiterhin einen Wert und umgekehrt.

[bearbeiten] Siehe auch

spezialisiert den Algorithmus std::swap
(function) [bearbeiten]