move
Effectue un cast non conditionnel de son argument en une référence rvalue, et signale par là-même qu'elle peut être déplacée si son type prend en charge le mouvement.
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
Paramètres
Paramètre |
Description |
---|---|
Type |
Type déduit du type de l'argument transmis dans Arg, avec les règles de réduction de référence. |
Arg |
Argument à convertir (transtypage). Bien que le type de Arg semble être spécifié en tant que référence rvalue, move accepte également les arguments lvalue, car les références lvalue peuvent être liées aux références rvalue. |
Valeur de retour
Arg en tant que référence rvalue, que son type soit un type référence ou non.
Notes
L'argument template Type n'est pas conçu pour être explicitement spécifié, mais pour être déduit du type de la valeur transmise dans Arg. Le type de Type est ajusté plus en détail en fonction des règles de réduction de référence.
move ne déplace pas son argument. Au lieu de cela, en effectuant un cast non conditionnel de son argument (qui peut être une lvalue) en une référence rvalue, elle permet au compilateur de déplacer ultérieurement, plutôt que de copier, la valeur transmise dans Arg si son type prend en charge le mouvement. Si son type ne prend pas en charge le mouvement, il est copié à la place.
Si la valeur transmise dans Arg est une lvalue (autrement dit, si elle a un nom ou que son adresse peut être prise), elle est invalidée lorsque le déplacement se produit. Ne faites pas référence à la valeur transmise dans Arg par son nom ou adresse après qu'elle a été déplacée.
Configuration requise
En-tête : <utility>
Espace de noms : std