swap(std::expected)
Depuis fr.cppreference.net
friend constexpr void swap( expected& lhs, expected& rhs ) noexcept(/*see below*/);
|
(depuis C++23) | |
Surcharge l'algorithme std::swap pour std::expected. Échange l'état de lhs avec celui de rhs. Effectue un appel à lhs.swap(rhs).
Cette surcharge participe à la résolution de surcharge uniquement si lhs.swap(rhs) est valide.
Cette fonction n'est pas visible par la recherche non qualifiée ou la recherche qualifiée ordinaire, et ne peut être trouvée que par la recherche dépendante des arguments lorsque std::expected<T, E> est une classe associée des arguments.
Paramètres
| lhs, rhs | - |
expected
objets dont les états doivent être échangés
|
Valeur de retour
(aucun)
Exceptions
noexcept
spécification :
noexcept
(
noexcept
(
lhs.
swap
(
rhs
)
)
)
Exemple
Exécuter ce code
#include <expected> #include <iostream> #include <string_view> using Ex = std::expected<std::string, int>; void show(const Ex& ex1, const Ex& ex2, std::string_view term = "\n") { for (int i{}; i != 2; ++i) { std::cout << (i ? "ex2" : "ex1"); if (const Ex& ex = (i ? ex2 : ex1); ex.has_value()) std::cout << ".value() = " << *ex << " "; else std::cout << ".error() = " << ex.error() << " "; } std::cout << term; } int main() { Ex ex1("\N{SMILING FACE WITH SUNGLASSES}"); Ex ex2{"\N{SLIGHTLY SMILING FACE}"}; show(ex1, ex2, "après swap(ex1, ex2):\n"); std::swap(ex1, ex2); show(ex1, ex2, "\n\n"); ex2 = std::unexpected(13); show(ex1, ex2, "après swap(ex1, ex2):\n"); std::swap(ex1, ex2); show(ex1, ex2, "\n\n"); ex2 = std::unexpected(37); show(ex1, ex2, "après swap(ex1, ex2):\n"); std::swap(ex1, ex2); show(ex1, ex2); }
Sortie :
ex1.value() = 😎 ex2.value() = 🙂 après swap(ex1, ex2): ex1.value() = 🙂 ex2.value() = 😎 ex1.value() = 🙂 ex2.error() = 13 après swap(ex1, ex2): ex1.error() = 13 ex2.value() = 🙂 ex1.error() = 13 ex2.error() = 37 après swap(ex1, ex2): ex1.error() = 37 ex2.error() = 13
Voir aussi
|
échange le contenu
(fonction membre publique) |