Avant C était normalisé, de nombreux compilateurs n'aurait eu aucune difficulté de manipulation zéro types de taille tant que le code n'a jamais tenté de soustraire un pointeur vers un zéro de type taille de l'autre. Ces types ont été utiles, et le soutien qui leur a été plus facile et moins cher que le leur interdisant. D'autres compilateurs décidé d'interdire ces types, cependant, et certaines statique affirmation de code peut avoir invoqué le fait qu'ils affichez si le code a essayé de créer une zéro-tableau de taille. Les auteurs de la Norme ont été confrontés à un choix:
Permettre compilateurs en silence accepter zéro de la taille de la matrice de déclarations, même
dans les cas où le but de ces déclarations seraient à déclencher une
de diagnostic et d'abandon à la compilation et à exiger que tous les compilateurs acceptent
de telles déclarations (mais pas nécessairement silencieusement) que la production de zéro
des objets de la taille.
Permettre compilateurs en silence accepter zéro de la taille de la matrice de déclarations, même
dans les cas où le but de ces déclarations seraient à déclencher une
de diagnostic et d'abandon de la compilation, et de permettre compilateurs face à de telles
déclarations, soit interrompre la compilation ou de continuer à leur guise.
Exiger que les implémentations de délivrer un diagnostic si le code déclare un
zéro-tableau de taille, mais alors permettre des implémentations soit abandonner
la compilation ou de continuer (avec tout ce que la sémantique ils l'entendent) à
leurs loisirs.
Les auteurs de la Norme opté pour la #3. Par conséquent, zéro-tableau de taille déclarations sont considérées par la Norme "extension", même si ces constructions ont été largement pris en charge avant de la Norme interdit.
La Norme C++ permet l'existence d'objets vides, mais dans un effort pour permettre à l'adresse des objets vides pour être utilisable sous forme de jetons de son mandat qu'ils ont une taille minimum de 1. Pour un objet qui n'a pas de membres pour avoir une taille de 0 serait donc de violer la Norme. Si un objet contient zéro de la taille des membres, cependant, la Norme C++ impose pas d'exigences sur la façon dont il est traité au-delà du fait qu'un programme contenant une telle déclaration doit déclencher un diagnostic. Depuis plus de code qui utilise de telles déclarations attend les objets qui en résultent ont une taille de zéro, le plus utile de comportement pour les compilateurs de la réception de ce code est de les traiter ainsi.