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>());
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
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
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!