Maison > développement back-end > C++ > Comment « istream_iterator(cin) » peut-il être interprété comme un type dans « l'analyse la plus délicate » ?

Comment « istream_iterator(cin) » peut-il être interprété comme un type dans « l'analyse la plus délicate » ?

Mary-Kate Olsen
Libérer: 2024-12-17 01:51:24
original
908 Les gens l'ont consulté

How Can `istream_iterator(cin)` Be Interpreted as a Type in the

L'ambiguïté de la parenthèse dans les déclarations de fonction

Dans le phénomène « l'analyse la plus vexante », des ambiguïtés surviennent lors de l'utilisation de modèles. Un tel cas se produit lors de l’analyse des déclarations de fonctions. Considérez la ligne suivante :

vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Copier après la connexion

Cette ligne peut être interprétée soit comme une déclaration de fonction, soit comme une déclaration de variable. La question est, comment le premier itérateur temporaire peut-il être interprété comme un type ?

Contrairement à l'intuition, istream_iterator(cin) n'est pas une déclaration de fonction. Au lieu de cela, il s'agit d'une expression qui crée une instance temporaire d'un istream_iterator initialisé avec le flux d'entrée cin. Les parenthèses superflues autour de cin ne changent pas cette interprétation.

Cette syntaxe particulière est héritée du C, où une telle parenthèse était également considérée comme une erreur. Dans ce cas, les parenthèses n’affectent pas le sens de l’expression. Cela sert simplement de bruit inutile, prêtant à confusion.

En conclusion, le premier itérateur temporaire de la ligne donnée représente le type istream_iterator, et les parenthèses autour de cin sont simplement superflues. Cependant, cette syntaxe ambiguë doit être utilisée avec prudence pour éviter d'éventuels malentendus.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal