En C, les références de transfert et les références rvalue entretiennent une relation spéciale, partageant une syntaxe similaire. Cette similitude soulève la question de savoir si elle provoque une confusion et si des syntaxes alternatives ont été envisagées.
Les références universelles (également appelées références de transfert) utilisent la syntaxe T&&. Elles diffèrent des références rvalue (T&&) par leur capacité à se lier à la fois aux lvalues (références aux objets) et aux rvalues (objets eux-mêmes).
La justification derrière le partage de la syntaxe pour les références de transfert et les références rvalue réside dans leur intégration transparente dans les règles de déduction des arguments du modèle et de réduction des références. En utilisant la même syntaxe, les références universelles peuvent être déduites sous forme de références lvalue (T&) ou de références rvalue (T&&) en fonction du contexte.
Cette approche évite le besoin d'une syntaxe supplémentaire et plus complexe. . Par exemple, si T&@ était utilisé pour les références universelles, le type de paramètre de fonction pourrait devenir T&@. ou T&&, ce qui s'écarterait du type réel déduit par le compilateur.
Il n'est pas clair si des syntaxes alternatives pour les références universelles ont été sérieusement envisagées lors de la normalisation processus. Cependant, la syntaxe cohérente s'aligne bien avec le système de types existant et permet de clarifier la compréhension du comportement des références en général.
En résumé, la syntaxe partagée pour le transfert des références et des références rvalue permet la déduction de type et la réduction des références en travaillez de manière transparente, évitant le besoin de syntaxe supplémentaire ou de règles de grammaire confuses.
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!