Namensräume
Varianten
Aktionen

std::copyable_function

Von cppreference.com
< cpp‎ | utility‎ | functional
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
Funktionsobjekte
Funktions-Wrapper
(C++11)
copyable_function
(C++26)
(C++11)
Funktionsaufruf
(C++17)(C++23)
Identitätsfunktions-Objekt
(C++20)
Transparente Operator-Wrapper
(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 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...)>;
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 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) [edit]
zerstört ein std::copyable_function-Objekt
(public member function) [edit]
ersetzt oder zerstört das Ziel
(public member function) [edit]
tauscht die Targets zweier std::copyable_function-Objekte
(public member function) [edit]
prüft, ob die std::copyable_function ein Target hat
(public member function) [edit]
ruft das Ziel auf
(public member function) [edit]

[edit] Non-member functions

überlädt den Algorithmus std::swap
(function) [edit]
vergleicht eine std::copyable_function mit nullptr
(function) [edit]

[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

[edit] See also

(C++11)
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassen-Template) [bearbeiten]
Move-only-Wrapper für jedes aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt
(Klassen-Template) [bearbeiten]
nicht-besitzender Wrapper für jedes aufrufbare Objekt
(Klassen-Template) [bearbeiten]