C++ benannte Anforderungen: Callable
Von cppreference.com
< cpp | benannte req
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.
|
|
(seit C++17) |
|
|
(seit C++23) |
Inhalt |
[bearbeiten] Anforderungen
Der Typ T erfüllt Callable, wenn
Gegeben
-
f, ein Objekt vom TypT, -
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) |
| (C++23) |
Move-only-Wrapper für jedes aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt (Klassen-Template) |
| (C++26) |
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt (Klassen-Template) |
| (C++26) |
nicht-besitzender Wrapper für jedes aufrufbare Objekt (Klassen-Template) |
| (C++11) |
bindet ein oder mehrere Argumente an ein Funktions-Objekt (Funktions-Template) |
| (C++20)(C++23) |
bindet eine variable Anzahl von Argumenten, in Reihenfolge, an ein Funktions-Objekt (Funktions-Template) |
| (C++11) |
CopyConstructible und CopyAssignable Referenz-Wrapper(Klassen-Template) |
| (C++11)(entfernt in C++20)(C++17) |
leitet den Ergebnistyp der Invokation eines aufrufbaren Objekts mit einer Reihe von Argumenten ab (Klassenvorlage) |
| (C++11) |
verwaltet einen separaten Thread (Klasse) |
| (C++20) |
std::thread mit Unterstützung für automatische Wiederaufnahme und Abbruch (Klasse) |
| (C++11) |
ruft eine Funktion nur einmal auf, auch wenn sie von mehreren Threads aufgerufen wird (Funktionsvorlage) |
| (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) |
| (C++11) |
paketiert eine Funktion, um ihren Rückgabewert zur asynchronen Abfrage zu speichern (Klassenvorlage) |
[bearbeiten] Siehe auch
| prüft, ob ein Typ mit den gegebenen Argumenttypen aufgerufen werden kann (als ob durch std::invoke) (Klassenvorlage) | |
| (C++20) |
gibt an, dass ein aufrufbarer Typ mit einem gegebenen Satz von Argumenttypen aufgerufen werden kann (Konzept) |
| (C++17)(C++23) |
ruft jedes Callable-Objekt mit den angegebenen Argumenten auf und optionaler Angabe des Rückgabetyps(seit C++23) (Funktions-Template) |