std::copyable_function
| Definiert in Header <functional>
|
||
template< class... >
class copyable_function; // not defined
|
(1) | (seit C++26) |
template< class R, class... Args >
class copyable_function<R(Args...)>;
template< class R, class... Args >
class copyable_function<R(Args...) noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &>;
template< class R, class... Args >
class copyable_function<R(Args...) & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &&>;
template< class R, class... Args >
class copyable_function<R(Args...) && noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const>;
template< class R, class... Args >
class copyable_function<R(Args...) const noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &>;
template< class R, class... Args >
class copyable_function<R(Args...) const & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &&>;
template< class R, class... Args >
class copyable_function<R(Args...) const && noexcept>;
|
(2) | (seit C++26) |
Die Klassenschablone std::copyable_function ist ein polymorpher Funktionswrapper für allgemeine Zwecke. std::copyable_function-Objekte können jedes CopyConstructible Callable Ziel speichern und aufrufen — Funktionen, Lambda-Ausdrücke, Bind-Ausdrücke oder andere Funktionsobjekte, sowie Zeiger auf Mitgliedsfunktionen und Zeiger auf Mitgliedsobjekte.
Das gespeicherte aufrufbare Objekt wird als Ziel von std::copyable_function bezeichnet. Wenn ein std::copyable_function kein Ziel enthält, wird es als leer bezeichnet. Im Gegensatz zu std::function führt der Aufruf eines leeren std::copyable_function zu undefiniertem Verhalten.
std::copyable_functions unterstützt jede mögliche Kombination von cv-Qualifizierern (ohne volatile), ref-Qualifizierern und noexcept-Spezifizierern, die in seinem Vorlagenparameter angegeben sind. Diese Qualifizierer und der Spezifizierer (falls vorhanden) werden zu seinem operator() hinzugefügt.
std::copyable_function erfüllt die Anforderungen von CopyConstructible und CopyAssignable.
Mitgliedertypen
| Typ | Definition |
result_type
|
R
|
Memberfunktionen
konstruiert ein neues
std::copyable_function
Objekt
(öffentliche Elementfunktion) |
|
zerstört ein
std::copyable_function
Objekt
(öffentliche Elementfunktion) |
|
|
ersetzt oder zerstört das Zielobjekt
(öffentliche Elementfunktion) |
|
tauscht die Ziele zweier
std::copyable_function
Objekte
(öffentliche Elementfunktion) |
|
prüft ob die
std::copyable_function
ein Zielobjekt besitzt
(öffentliche Elementfunktion) |
|
|
ruft das Zielobjekt auf
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
(C++26)
|
überlädt den
std::swap
Algorithmus
(Funktion) |
|
(C++26)
|
vergleicht ein
std::copyable_function
mit
nullptr
(Funktion) |
Hinweise
Implementierungen können ein aufrufbares Objekt kleiner Größe innerhalb des
std::copyable_function
Objekts speichern. Eine solche Small-Object-Optimierung ist effektiv für Funktionszeiger und
std::reference_wrapper
Spezialisierungen 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 | Standard | Funktion |
|---|---|---|---|
__cpp_lib_copyable_function
|
202306L
|
(C++26) |
std::copyable_function
|
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++11)
|
kopierbarer Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassentemplate) |
|
(C++23)
|
Nur-verschiebbarer Wrapper für jedes aufrufbare Objekt, das Qualifier in einer gegebenen Aufrufsignatur unterstützt
(Klassentemplate) |
|
(C++26)
|
nicht-besitzender Wrapper für jedes aufrufbare Objekt
(Klassentemplate) |