Namespaces
Variants

operator== (std::move_only_function)

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
friend bool operator == ( const std:: move_only_function & f, std:: nullptr_t ) noexcept ;
(depuis C++23)

Vérifie si le wrapper f possède une cible appelable en le comparant formellement avec std::nullptr_t . Les wrappers vides (c'est-à-dire les wrappers sans cible) sont considérés égaux, les fonctions non vides sont considérées non égales.

Cette fonction n'est pas visible par la recherche non qualifiée ou qualifiée ordinaire, et ne peut être trouvée que par la recherche dépendante des arguments lorsque std::move_only_function<FunctionType> est une classe associée des arguments.

L'opérateur != est synthétisé à partir de operator== .

Table des matières

Paramètres

f - std::move_only_function à comparer

Valeur de retour

! f .

Exemple

#include <functional>
#include <iostream>
#include <utility>
using SomeVoidFunc = std::move_only_function<void(int) const>;
class C {
public:
    C() = default;
    C(SomeVoidFunc func) : void_func_(std::move(func)) {}
    void default_func(int i) const { std::cout << i << '\n'; };
    void operator()() const
    {
        if (void_func_ == nullptr) // comparaison spécialisée avec nullptr
            default_func(7);
        else
            void_func_(7);
    }
private:
    SomeVoidFunc void_func_{};
};
void user_func(int i)
{
    std::cout << (i + 1) << '\n';
}
int main()
{
    C c1;
    C c2(user_func);
    c1();
    c2();
}

Sortie :

7
8

Voir aussi

vérifie si le std::move_only_function a une cible
(fonction membre publique)
(supprimé en C++20)
compare un std::function avec nullptr
(modèle de fonction)