Namespaces
Variants

std::copyable_function

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmdienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Dreiseitiger Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Funktionsobjekte
Funktionsaufruf
(C++17)(C++23)
Identitäts-Funktionsobjekt
(C++20)
Transparente Operatorwrapper
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Alte Binder und Adaptoren
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
(bis C++17*)(bis C++17*)
(bis C++17*)(bis C++17*)

(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
 
 
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

ü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

Siehe auch

(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)
nicht-besitzender Wrapper für jedes aufrufbare Objekt
(Klassentemplate)