swap(std::expected)
Von cppreference.com
| friend constexpr void swap( expected& lhs, expected& rhs ) noexcept(/*siehe unten*/); |
(seit C++23) | |
Überlädt den std::swap Algorithmus für std::expected. Vertauscht den Zustand von lhs mit dem von rhs. Ruft effektiv lhs.swap(rhs) auf.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn lhs.swap(rhs) gültig ist.
Diese Funktion ist für die gewöhnliche unqualifizierte oder qualifizierte Suche nicht sichtbar und kann nur durch argumentabhängige Suche gefunden werden, wenn std::expected<T, E> eine assoziierte Klasse der Argumente ist.
Inhalt |
[bearbeiten] Parameter
| lhs, rhs | - | expected Objekte, deren Zustände vertauscht werden sollen |
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Ausnahmen
noexcept-Spezifikation:
noexcept(noexcept(lhs.swap(rhs)))
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <expected> #include <iostream> #include <string> using Ex = std::expected<std::string, int>; void show(const Ex& ex1, const Ex& ex2) { for (int i{}; i < 2; ++i) { std::cout << (i ? "ex2" : "ex1"); if (const Ex& ex = (i ? ex2 : ex1); ex.has_value()) std::cout << ".has_value() = " << *ex << '\n'; else std::cout << ".error() = " << ex.error() << '\n'; } } int main() { Ex ex1("\N{DOG FACE}"); Ex ex2{"\N{BONE}"}; show(ex1, ex2); swap(ex1, ex2); std::cout << "swap(ex1, ex2);\n"; show(ex1, ex2); std::cout << '\n'; ex2 = std::unexpected(13); show(ex1, ex2); swap(ex1, ex2); std::cout << "swap(ex1, ex2);\n"; show(ex1, ex2); std::cout << '\n'; ex2 = std::unexpected(19937); show(ex1, ex2); swap(ex1, ex2); std::cout << "swap(ex1, ex2);\n"; show(ex1, ex2); std::cout << '\n'; }
Ausgabe
ex1.has_value() = 🐶 ex2.has_value() = 🦴 swap(ex1, ex2); ex1.has_value() = 🦴 ex2.has_value() = 🐶 ex1.has_value() = 🦴 ex2.error() = 13 swap(ex1, ex2); ex1.error() = 13 ex2.has_value() = 🦴 ex1.error() = 13 ex2.error() = 19937 swap(ex1, ex2); ex1.error() = 19937 ex2.error() = 13
[bearbeiten] Siehe auch
| tauscht die Inhalte (member function) |