Namespaces
Variants

swap(std::expected)

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
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

#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)