int a [] = {1,2,}; Se permite una coma extraña. ¿Alguna razón en particular

Tal vez no soy de este planeta, pero me parece que lo siguiente debería ser un error de sintaxis:

int a[] = {1,2,}; //extra comma in the end

Pero no lo es. Me sorprendió cuando este código se compiló en Visual Studio, pero aprendí a no confiar en el compilador de MSVC en lo que respecta a las reglas de C ++, así que verifiqué el estándar ye permitido por el estándar también. Puede ver 8.5.1 para las reglas gramaticales si no me cree.

¿Por qué está permitido? Esta puede ser una pregunta estúpida e inútil, pero quiero que entiendas por qué te pregunto. Si se tratara de un caso secundario de una regla gramatical general, lo entendería: decidieron no hacer que la gramática general sea más difícil simplemente para no permitir una coma redundante al final de una lista de inicializadores. Pero no, la coma adicional esexplícitament permitido. Por ejemplo, no está permitido tener una coma redundante al final de una lista de argumentos de llamada a función (cuando la función toma...),que es normal.

Entonces, de nuevo, ¿hay alguna razón particular por la cual esta coma redundante esexplícitament ¿permitido

Respuestas a la pregunta(19)

Su respuesta a la pregunta