web-dev-qa-db-fra.com

Transfert parfait - de quoi s'agit-il?

Duplicata possible:
Avantages de l'utilisation de l'avant

Quelqu'un pourrait-il m'expliquer en quoi consiste une transmission parfaite?

49
smallB

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

Pourquoi est-ce utile? Eh bien, cela signifie qu'un modèle de fonction peut transmettre ses arguments à une autre fonction tout en conservant la nature lvalue/rvalue des arguments de la fonction en utilisant std :: forward. Ceci est appelé "transfert parfait", évite une copie excessive et évite à l'auteur du modèle d'avoir à écrire plusieurs surcharges pour les références lvalue et rvalue.

40
J. Steen

Citation Annonce de session: Aventures dans une transmission parfaite :

Le perfectionnement de la transmission est une technique C++ 0x importante construite au-dessus des références rvalue. Il permet d'appliquer automatiquement la sémantique des mouvements, même lorsque la source et la destination d'un déplacement sont séparées par des appels de fonction intermédiaires. Les exemples courants incluent les constructeurs et les fonctions de définition qui transmettent les arguments qu'ils reçoivent aux membres de données de la classe qu'ils initialisent ou définissent, ainsi que les fonctions de bibliothèque standard comme make_shared, qui "perfectionnent" ses arguments au constructeur de classe de tout objet to-be-created shared_ptr, c'est pointer vers.

8
Gregory Pakosz