La motivation derrière l'extension de la durée de vie de Rvalue pour les références Const
Alors que la décision de prolonger la durée de vie des temporaires lorsqu'ils sont liés à des références const a recueilli beaucoup Attention, sa justification reste un sujet de spéculation. Pour comprendre cette fonctionnalité linguistique, revisitons l'historique et les avantages attendus.
En 1993, une proposition a été avancée pour remédier au traitement incohérent des intérimaires lorsqu'ils sont référencés. Sans cette disposition, l'interdiction des références aux valeurs temporaires aurait pu nuire aux performances en raison du manque d'optimisation de la valeur de retour (RVO) à l'époque.
La raison derrière l'extension de la durée de vie des rvalues était d'assurer un comportement cohérent pour les références, indépendamment de qu'ils soient liés à des valeurs l ou temporaires. Éteindre prématurément la durée de vie d'une rvalue après l'avoir liée à une référence aurait conduit à un code imprévisible et sujet aux erreurs.
Plus précisément, l'extension de la durée de vie d'une rvalue a permis aux objets de masquer les détails d'implémentation des clients. Par exemple, considérons une classe matricielle qui renvoie à la fois des vecteurs de ligne et de colonne. Pour optimiser les performances, l'implémentation peut choisir de renvoyer soit une référence, soit une copie en fonction des décisions de disposition des données.
En faisant du type de retour une référence const, les clients peuvent accepter de manière transparente les valeurs et les références sans modifier leur code. Cette flexibilité a permis aux auteurs de bibliothèques de faire évoluer l'implémentation sans casser les applications existantes.
En résumé, la justification de l'extension de la durée de vie de rvalue pour les références const était d'assurer un comportement cohérent, de faciliter la dissimulation des détails d'implémentation et de préserver la compatibilité ascendante au milieu changements de mise en œuvre potentiels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!