Partager via


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

Voir aussi

Référence

<utility>

Lvalues et Rvalues