Maison > développement back-end > C++ > Pourquoi les listes d'initialiseurs sont-elles restreintes dans les arguments des opérateurs binaires C ?

Pourquoi les listes d'initialiseurs sont-elles restreintes dans les arguments des opérateurs binaires C ?

Mary-Kate Olsen
Libérer: 2024-12-12 16:12:14
original
578 Les gens l'ont consulté

Why Are Initializer Lists Restricted in C   Binary Operator Arguments?

Listes d'initialisation dans les arguments des opérateurs

L'utilisation de listes d'initialisation sur le côté droit (RHS) des opérateurs, une fonctionnalité absente dans C 11, soulève des questions sur le raisonnement derrière cette restriction.

Le standard C interdit l'utilisation directe de listes d'initialiseurs sur le RHS des opérateurs binaires comme ' ', '*' ou '<<'. Cela vient du fait que les listes d'initialisation ne sont pas considérées comme des expressions selon le §5 de la Norme, qui interdit leur utilisation dans les fonctions et les arguments d'opérateurs binaires.

Pour faciliter l'utilisation des listes d'initialisation, la norme introduit des exceptions. Cependant, il n'y a pas d'exception de ce type pour les opérateurs binaires, laissant les listes d'initialiseurs restreintes des deux côtés.

La décision derrière cette restriction est expliquée dans N2215 par Stroustrup et Dos Reis (2007). Autoriser les listes d'initialisation comme opérande de gauche entraînerait des conflits d'analyse en raison de l'utilisation d'accolades pour les listes d'initialisation et les blocs.

De plus, autoriser les listes d'initialisation uniquement sur le RHS, par opposition aux deux côtés, a été jugé créer une incohérence excessive. Par conséquent, les listes d'initialiseurs sont autorisées dans certains contextes, tels que les arguments de fonction, les indices et les affectations, mais pas dans le cas général des arguments d'opérateurs binaires.

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