Namensräume
Varianten
Aktionen

operator==(std::move_only_function)

Von cppreference.com
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
Funktionsobjekte
Funktionsaufruf
(C++17)(C++23)
Identitätsfunktions-Objekt
(C++20)
Transparente Operator-Wrapper
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Alte Binder und Adaptoren
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
(bis C++17*)(bis C++17*)
(bis C++17*)(bis C++17*)

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

Prüft, ob der Wrapper f ein aufrufbares Ziel hat, indem er ihn formal mit std::nullptr_t vergleicht. Leere Wrapper (d.h. Wrapper ohne Ziel) sind gleich, nicht leere Funktionen sind ungleich.

Diese Funktion ist weder für die übliche noch für die qualifizierte Suche sichtbar und kann nur durch Argument-abhängige Suche gefunden werden, wenn std::move_only_function<FunctionType> eine assoziierte Klasse der Argumente ist.

Der Operator != wird aus operator== synthetisiert.

Inhalt

[bearbeiten] Parameter

f - std::move_only_function zum Vergleichen

[bearbeiten] Rückgabewert

!f.

[bearbeiten] Beispiel

#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) // specialized compare with 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();
}

Ausgabe

7
8

[bearbeiten] Siehe auch

prüft, ob das std::move_only_function ein Ziel hat
(public member function) [bearbeiten]
(in C++20 entfernt)
vergleicht ein std::function mit nullptr
(function template) [edit]