Visual C aceitando número errado de argumentos?

Por que isso é compilado no Visual Studio:

void foo(int a) {}

int main() {
    foo(1,2);
}

Há um aviso

source_file.c(4) : warning C4020: 'foo' : too many actual parameters

mas por que não é um erro, como é o caso do gcc / clang?

Estou ciente das definições de função no estilo K&R, mas isso só se aplica afoo() o que levaria um número variável de argumentos.

Citações do padrão que permitem isso serão muito apreciadas.

questionAnswers(1)

yourAnswerToTheQuestion