std::copyable_function
| Definiert in der Header-Datei <functional> |
||
| template< class... > class copyable_function; // nicht definiert |
(1) | (seit C++26) |
| template< class R, class... Args > class copyable_function<R(Args...)>; |
(2) | (seit C++26) |
Die Klassenvorlage std::copyable_function ist ein allgemeiner polymorpher Funktions-Wrapper. std::copyable_function-Objekte können jedes CopyConstructible Callable Target speichern und aufrufen – Funktionen, Lambda-Ausdrücke, Bind-Ausdrücke oder andere Funktions-Objekte, sowie Zeiger auf Member-Funktionen und Zeiger auf Member-Objekte.
Das gespeicherte aufrufbare Objekt wird als Target von std::copyable_function bezeichnet. Wenn eine std::copyable_function kein Target enthält, wird sie als leer bezeichnet. Im Gegensatz zu std::function führt der Aufruf einer leeren std::copyable_function zu undefiniertem Verhalten.
std::copyable_function unterstützt jede mögliche Kombination von cv-Qualifizierern (nicht einschließlich volatile), Referenzqualifizierern und noexcept-Spezifizierern, die in ihren Template-Parametern angegeben sind. Diese Qualifizierer und Spezifizierer (falls vorhanden) werden an ihren operator() angehängt.
std::copyable_function erfüllt die Anforderungen von CopyConstructible und CopyAssignable.
Inhalt |
[edit] Member types
| Typ | Definition |
result_type
|
R
|
[edit] Member functions
konstruiert ein neues std::copyable_function-Objekt(public member function) | |
zerstört ein std::copyable_function-Objekt(public member function) | |
| ersetzt oder zerstört das Ziel (public member function) | |
tauscht die Targets zweier std::copyable_function-Objekte(public member function) | |
prüft, ob die std::copyable_function ein Target hat(public member function) | |
| ruft das Ziel auf (public member function) |
[edit] Non-member functions
| (C++26) |
überlädt den Algorithmus std::swap (function) |
| (C++26) |
vergleicht eine std::copyable_function mit nullptr(function) |
[edit] Notes
Implementierungen können ein aufrufbares Objekt kleiner Größe innerhalb des std::copyable_function-Objekts speichern. Eine solche Small-Object-Optimierung ist für Funktionszeiger und Spezialisierungen von std::reference_wrapper praktisch erforderlich und kann nur auf Typen T angewendet werden, für die std::is_nothrow_move_constructible_v<T> true ist.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_copyable_function |
202306L |
(C++26) | std::copyable_function
|
[edit] Example
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] See also
| (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) |
nicht-besitzender Wrapper für jedes aufrufbare Objekt (Klassen-Template) |