Questo compila perfettamente bene con l'attuale compilatore MSVC:inizializzata const
struct Foo
{
} const foo;
Tuttavia, non riesce a compilare con la g corrente ++ compiler:
error: uninitialized const 'foo' [-fpermissive]
note: 'const struct Foo' has no user-provided default constructor
Se fornisco un costruttore di default me stesso, è works:
struct Foo
{
Foo() {}
} const foo;
È un altro caso di MSVC troppo permissivo o g ++ troppo rigido qui?
Ottima domanda Mr Overflow. –
Duplicati: http://stackoverflow.com/questions/5335836/why-a-const-object-of-an-empty-class-cant-be-created http://stackoverflow.com/questions/7411515/why- does-c-require-a-user-provided-default-constructor-to-default-construct-a, tra gli altri. – GManNickG
Non riesco a riprodurlo su GCC 4.6.1, con qualsiasi opzione di dialetto. Funziona solo se installo una variabile membro (come 'int a;'), e l'errore è molto più accurato: ''const struct Foo' non ha un costruttore predefinito fornito dall'utente e il costruttore implicitamente definito non inizializza 'int Foo :: a'' –