std::experimental::optional<T>::swap
Von cppreference.com
< cpp | experimental | optional
| 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
inund das andereun), wird der enthaltene Wert vonunaus std::move(*in) direkt initialisiert, gefolgt von der Zerstörung des enthaltenen Wertes vonin, als ob durch in.val->T::~T(). Nach diesem Aufruf enthältinkeinen Wert,unenthä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&>())))
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) |