Typo à la page msdn « C + Expressions constantes Les »?
-
12-10-2019 - |
Question
Il dit à msdn page pour c ++ expressions constantes :
constantes doit être non intégral converti (explicitement ou implicitement) à des types intégral à juridique dans une expression constante. Par conséquent, le code suivant est juridique:
const double Size = 11.0; char chArray[(int)Size];
Au moins sur VC ++ 10.0 la deuxième ligne produit: "C2057 d'erreur: expression constante attendu". Donc, est-il légal sur un autre compilateur ou est la page msdn tout simplement faux?
La solution
Selon 5.19 / 1:
An intégrante expression constante can ne contiennent que des littéraux (2.13), recenseurs, variables
const
ou des membres de données statiques d'intégrale ou types d'énumération initialisés avec expressions constantes (8,5), de type non paramètres de modèle entier ou types d'énumération etsizeof
expressions. littéraux flottants (2.13.3) ne peut apparaître que si elles sont à jeter intégrale ou énumération types .
De ma compréhension du code est invalide, alors que le suivant est légal:
char chArray[(int)11.0];
Autres conseils
Ce n'est pas selon la norme juridique C ++. Voir 5,19 / 2 pour les règles de la spécification.