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* )
Défini dans l'en-tête <functional>
template < class ... >
class copyable_function ; // non défini
(1) (depuis 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) (depuis C++26)

Le modèle de classe std::copyable_function est un wrapper de fonction polymorphe à usage général. Les objets std::copyable_function peuvent stocker et invoquer toute CopyConstructible Callable cible — fonctions, expressions lambda , expressions de liaison , ou autres objets fonction, ainsi que des pointeurs vers des fonctions membres et des pointeurs vers des objets membres.

L'objet appelable stocké est appelé la cible de std::copyable_function . Si une std::copyable_function ne contient aucune cible, elle est dite vide . Contrairement à std::function , invoquer une vide std::copyable_function entraîne un comportement indéfini.

std::copyable_function prend en charge toutes les combinaisons possibles de qualificateurs cv (à l'exclusion de volatile ), qualificateurs de référence , et spécificateurs noexcept fournis dans son paramètre template. Ces qualificateurs et spécificateurs (le cas échéant) sont ajoutés à son operator() .

std::copyable_function satisfait les exigences de CopyConstructible et CopyAssignable .

Table des matières

Types membres

Type Définition
result_type R

Fonctions membres

construit un nouvel objet std::copyable_function
(fonction membre publique)
détruit un objet std::copyable_function
(fonction membre publique)
remplace ou détruit la cible
(fonction membre publique)
échange les cibles de deux objets std::copyable_function
(fonction membre publique)
vérifie si l'objet std::copyable_function possède une cible
(fonction membre publique)
invoque la cible
(fonction membre publique)

Fonctions non membres

surcharge l'algorithme std::swap
(fonction)
(C++26)
compare un std::copyable_function avec nullptr
(fonction)

Notes

Les implémentations peuvent stocker un objet appelable de petite taille dans l'objet std::copyable_function . Une telle optimisation des petits objets est effectivement requise pour les pointeurs de fonction et les spécialisations de std::reference_wrapper , et ne peut être appliquée qu'aux types T pour lesquels std:: is_nothrow_move_constructible_v < T > est true .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_copyable_function 202306L (C++26) std::copyable_function

Exemple

Voir aussi

(C++11)
enveloppe copiable de tout objet appelable copiable
(modèle de classe)
enveloppe non copiable de tout objet appelable prenant en charge les qualificateurs dans une signature d'appel donnée
(modèle de classe)
enveloppe non propriétaire de tout objet appelable
(modèle de classe)