decay-copy
|
template
<
class
T
>
typename std:: decay < T > :: type decay - copy ( T && value ) ; |
(depuis C++11)
(jusqu'à C++20) ( exposition uniquement* ) |
|
|
template
<
class
T
>
requires
std::
convertible_to
<
T,
std::
decay_t
<
T
>>
|
(depuis C++20)
( exposition uniquement* ) |
|
Retourne std:: forward < T > ( value ) (implicitement converti vers le type décru), une copie prvalue décru de value .
Table des matières |
Paramètres
| value | - | la valeur à copier |
Valeur de retour
Une copie dégradée de value en tant que prvalue.
Notes
decay-copy
a été introduit par la résolution de
LWG issue 929
. Il est initialement utilisé dans la
bibliothèque de support de la concurrence
pour garantir que les arguments sont dégradés lors du passage par valeur, et est ensuite utilisé dans la
bibliothèque de plages
.
La fonctionnalité du langage
auto
(
x
)
introduite en C++23 permet également de créer des copies dégradées en tant que prvalues. La seule différence est que
decay-copy
matérialise
value
et produit toujours une copie, tandis que
auto
(
expr
)
est une opération nulle si
expr
est une prvalue.
Toutes les utilisations de
decay-copy
dans la bibliothèque standard (voir ci-dessous) sauf
views::all
,
ranges::take_view
et
ranges::drop_view
sont remplacées par
auto
(
x
)
depuis C++23.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3724 | C++20 |
decay-copy
n'était pas contraint
|
contraint |
Voir aussi
construit un nouvel objet
thread
(fonction membre publique de
std::thread
)
|
|
construit un nouvel objet
jthread
(fonction membre publique de
std::jthread
)
|
|
|
(C++11)
|
exécute une fonction de manière asynchrone (potentiellement dans un nouveau thread) et retourne un
std::future
qui contiendra le résultat
(modèle de fonction) |
|
(C++20)
|
retourne un itérateur vers le début d'une plage
(objet point de personnalisation) |
|
(C++20)
|
retourne un sentinelle indiquant la fin d'une plage
(objet point de personnalisation) |
|
(C++20)
|
retourne un itérateur inverse vers une plage
(objet point de personnalisation) |
|
(C++20)
|
retourne un itérateur de fin inverse vers une plage
(objet point de personnalisation) |
|
(C++20)
|
retourne un entier égal à la taille d'une plage
(objet point de personnalisation) |
|
(C++20)
|
obtient un pointeur vers le début d'une plage contiguë
(objet point de personnalisation) |
|
(C++20)
|
une
view
qui inclut tous les éléments d'une
range
(alias de modèle) (objet adaptateur de plage) |
|
(C++20)
|
une
view
constituée des N premiers éléments d'une autre
view
(modèle de classe) (objet adaptateur de plage) |
|
(C++20)
|
une
view
constituée d'éléments d'une autre
view
, en ignorant les N premiers éléments
(modèle de classe) (objet adaptateur de plage) |