std:: copyable_function
|
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...
)
>
;
|
(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
|
(C++26)
|
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
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++11)
|
enveloppe copiable de tout objet appelable copiable
(modèle de classe) |
|
(C++23)
|
enveloppe non copiable de tout objet appelable prenant en charge les qualificateurs dans une signature d'appel donnée
(modèle de classe) |
|
(C++26)
|
enveloppe non propriétaire de tout objet appelable
(modèle de classe) |