Namespaces
Variants

decay-copy

From cppreference.net
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 >>
constexpr std:: decay_t < T > decay - copy ( T && value )

noexcept ( std:: is_nothrow_convertible_v < 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)
retourne un itérateur vers le début d'une plage
(objet point de personnalisation)
retourne un sentinelle indiquant la fin d'une plage
(objet point de personnalisation)
retourne un itérateur inverse vers une plage
(objet point de personnalisation)
retourne un itérateur de fin inverse vers une plage
(objet point de personnalisation)
retourne un entier égal à la taille d'une plage
(objet point de personnalisation)
obtient un pointeur vers le début d'une plage contiguë
(objet point de personnalisation)
une view qui inclut tous les éléments d'une range
(alias de modèle) (objet adaptateur de plage)
une view constituée des N premiers éléments d'une autre view
(modèle de classe) (objet adaptateur de plage)
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)