Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: Callable

Von cppreference.com
 
 
C++ benannte Anforderungen
 

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

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

(seit C++17)

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

(seit C++23)

Inhalt

[bearbeiten] 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 in einem nicht ausgewerteten Kontext wohlgeformt.

[bearbeiten] Anmerkungen

Zeiger auf Datenmember sind Callable, auch wenn keine Funktionsaufrufe stattfinden.

[bearbeiten] Standardbibliothek

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

(C++11)
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassen-Template) [bearbeiten]
Move-only-Wrapper für jedes aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt
(Klassen-Template) [bearbeiten]
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt
(Klassen-Template) [bearbeiten]
nicht-besitzender Wrapper für jedes aufrufbare Objekt
(Klassen-Template) [bearbeiten]
(C++11)
bindet ein oder mehrere Argumente an ein Funktions-Objekt
(Funktions-Template) [bearbeiten]
(C++20)(C++23)
bindet eine variable Anzahl von Argumenten, in Reihenfolge, an ein Funktions-Objekt
(Funktions-Template) [bearbeiten]
CopyConstructible und CopyAssignable Referenz-Wrapper
(Klassen-Template) [bearbeiten]
(C++11)(entfernt in C++20)(C++17)
leitet den Ergebnistyp der Invokation eines aufrufbaren Objekts mit einer Reihe von Argumenten ab
(Klassenvorlage) [bearbeiten]
(C++11)
verwaltet einen separaten Thread
(Klasse) [bearbeiten]
(C++20)
std::thread mit Unterstützung für automatische Wiederaufnahme und Abbruch
(Klasse) [bearbeiten]
(C++11)
ruft eine Funktion nur einmal auf, auch wenn sie von mehreren Threads aufgerufen wird
(Funktionsvorlage) [bearbeiten]
(C++11)
führt eine Funktion asynchron aus (potenziell in einem neuen Thread) und gibt ein std::future zurück, das das Ergebnis enthalten wird
(Funktionsvorlage) [bearbeiten]
paketiert eine Funktion, um ihren Rückgabewert zur asynchronen Abfrage zu speichern
(Klassenvorlage) [bearbeiten]

[bearbeiten] Siehe auch

prüft, ob ein Typ mit den gegebenen Argumenttypen aufgerufen werden kann (als ob durch std::invoke)
(Klassenvorlage) [bearbeiten]
gibt an, dass ein aufrufbarer Typ mit einem gegebenen Satz von Argumenttypen aufgerufen werden kann
(Konzept) [bearbeiten]
(C++17)(C++23)
ruft jedes Callable-Objekt mit den angegebenen Argumenten auf und optionaler Angabe des Rückgabetyps(seit C++23)
(Funktions-Template) [bearbeiten]