O que realmente está acontecendo nesta declaração AnonymousClass (variável

Tentando compilar:

class AnonymousClass
{
public:
    AnonymousClass(int x)
    {
    }
};


int main()
{
    int x;
    AnonymousClass(x);
    return 0;
} 

gera erros do MSVC:

foo.cpp(13) : error C2371: 'x' : redefinition; different basic types
    foo.cpp(12) : see declaration of 'x'
foo.cpp(13) : error C2512: 'AnonymousClass' : no appropriate default constructor available

s mensagens de erro de @g ++ são semelhantes:

foo.cpp: In function ‘int main()’:
foo.cpp:13: error: conflicting declaration ‘AnonymousClass x’
foo.cpp:12: error: ‘x’ has a previous declaration as ‘int x’
foo.cpp:12: warning: unused variable ‘x’

É facilmente corrigível, dando oAnonymousClass objeta um nome explícito, mas o que está acontecendo aqui e por quê? Presumo que isso seja mais estranho à sintaxe da declaração (como os casos descritos em Q10.2 e Q10.21 da FAQ comp.lang.C ++), mas não estou familiarizado com est

questionAnswers(3)

yourAnswerToTheQuestion