Namespaces
Variants

C++ named requirements: Callable

From cppreference.net
C++ named requirements

Ein Callable -Typ ist ein Typ, für den die INVOKE - und INVOKE<R> -Operationen (verwendet z.B. von std::function , std::bind und std::thread::thread ) anwendbar sind.

INVOKE kann explizit mit der Bibliotheksfunktion std::invoke ausgeführt werden.

(seit C++17)

INVOKE<R> kann explizit mit der Bibliotheksfunktion std::invoke_r ausgeführt werden.

(seit C++23)

Inhaltsverzeichnis

Anforderungen

Der Typ T erfüllt Callable wenn

Gegeben

  • f , ein Objekt vom Typ T ,
  • ArgTypes , geeignete Liste von Argumenttypen,
  • R , geeigneter Rückgabetyp.

Die folgenden Ausdrücke müssen gültig sein:

Ausdruck Anforderungen
INVOKE<R> ( f, std:: declval < ArgTypes > ( ) ... ) Der Ausdruck ist wohlgeformt in einem nicht-ausgewerteten Kontext.

Hinweise

Zeiger auf Datenelemente sind Aufrufbar , obwohl keine Funktionsaufrufe stattfinden.

Standardbibliothek

Zusätzlich akzeptieren die folgenden Standardbibliothekseinrichtungen jeden Callable -Typ (nicht nur FunctionObject ):

(C++11)
kopierbarer Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassentemplate)
nur-verschiebbarer Wrapper für jedes aufrufbare Objekt, das Qualifier in einer gegebenen Aufrufsignatur unterstützt
(Klassentemplate)
kopierbarer Wrapper für jedes kopierkonstruierbare aufrufbare Objekt, das Qualifier in einer gegebenen Aufrufsignatur unterstützt
(Klassentemplate)
nicht-besitzender Wrapper für jedes aufrufbare Objekt
(Klassentemplate)
(C++11)
bindet ein oder mehrere Argumente an ein Funktionsobjekt
(Funktionstemplate)
(C++20) (C++23)
bindet eine variable Anzahl von Argumenten in Reihenfolge an ein Funktionsobjekt
(Funktionstemplate)
CopyConstructible und CopyAssignable Referenz-Wrapper
(Klassentemplate)
(C++11) (removed in C++20) (C++17)
leitet den Ergebnistyp des Aufrufs eines aufrufbaren Objekts mit einer Menge von Argumenten ab
(Klassentemplate)
(C++11)
verwaltet einen separaten Thread
(Klasse)
(C++20)
std::thread mit Unterstützung für automatisches Join und Abbruch
(Klasse)
(C++11)
ruft eine Funktion nur einmal auf, selbst wenn sie von mehreren Threads aufgerufen wird
(Funktionstemplate)
(C++11)
führt eine Funktion asynchron aus (möglicherweise in einem neuen Thread) und gibt eine std::future zurück, die das Ergebnis halten wird
(Funktionstemplate)
verpackt eine Funktion, um ihren Rückgabewert für asynchronen Abruf zu speichern
(Klassentemplate)

Siehe auch

prüft, ob ein Typ mit den gegebenen Argumenttypen aufgerufen werden kann (als ob durch std::invoke )
(Klassentemplate)
spezifiziert, dass ein aufrufbarer Typ mit einem gegebenen Satz von Argumenttypen aufgerufen werden kann
(Konzept)
(C++17) (C++23)
ruft jedes Callable -Objekt mit gegebenen Argumenten auf mit der Möglichkeit, den Rückgabetyp zu spezifizieren (seit C++23)
(Funktionstemplate)