Namespaces
Variants

std:: copyable_function

From cppreference.net
Utilities library
Function objects
Function wrappers
(C++11)
copyable_function
(C++26)
(C++11)
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur bleibt unverändert, wie angefordert.)
Definiert im Header <functional>
template < class ... >
class copyable_function ; // nicht definiert
(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 Klassenvorlage std::copyable_function ist ein universeller polymorpher Funktionswrapper. 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 Elementfunktionen und Zeiger auf Elementobjekte.

Das gespeicherte aufrufbare Objekt wird als das Zielobjekt von std::copyable_function bezeichnet. Wenn eine std::copyable_function kein Zielobjekt 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 (ohne volatile ), Ref-Qualifizierern und noexcept-Spezifizierern , die in seinem Template-Parameter angegeben sind. Diese Qualifizierer und Spezifizierer (falls vorhanden) werden zu seinem operator() hinzugefügt.

std::copyable_function erfüllt die Anforderungen von CopyConstructible und CopyAssignable .

Inhaltsverzeichnis

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)