int a [] = {1,2,}; Vírgula estranha permitida. Alguma razão em particular?

alvez eu não seja deste planeta, mas parece-me que o seguinte deve ser um erro de sintax

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

Mas isso não. Fiquei surpreso quando esse código foi compilado no Visual Studio, mas aprendi a não confiar no compilador MSVC no que diz respeito às regras de C ++, por isso verifiquei o padrão e permitido pelo padrão também. Você pode ver 8.5.1 para as regras gramaticais se não acredita em mim.

Por que isso é permitido? Esta pode ser uma pergunta inútil estúpida, mas quero que você entenda por que estou perguntando. Se fosse um sub-caso de uma regra gramatical geral, eu entenderia - eles decidiram não tornar a gramática geral mais difícil apenas para impedir uma vírgula redundante no final de uma lista de inicializadores. Mas não, a vírgula adicional éexplicitament permitido. Por exemplo, não é permitido ter uma vírgula redundante no final de uma lista de argumentos de chamada de função (quando a função usa...),que é normal.

Então, novamente, existe algum motivo específico para que essa vírgula redundante sejaexplicitament permitido

questionAnswers(19)

yourAnswerToTheQuestion