operator==(std::move_only_function)
Von cppreference.com
< cpp | utility | functional | move only function
| 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
Führen Sie diesen Code aus
#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) | |
| (in C++20 entfernt) |
vergleicht ein std::function mit nullptr (function template) |