Esto compila perfectamente bien con la corriente MSVC compilador:sin inicializar const
struct Foo
{
} const foo;
Sin embargo, falla al compilar con la g corriente ++ compilador:
error: uninitialized const 'foo' [-fpermissive]
note: 'const struct Foo' has no user-provided default constructor
Si proporciono un constructor por defecto mismo, se obras:
struct Foo
{
Foo() {}
} const foo;
¿Es este otro caso de MSVC demasiado permisivo, o es g ++ demasiado estricto aquí?
Gran pregunta Sr. Overflow. –
Duplicados: 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-build-a entre otros. – GManNickG
No puedo reproducir esto en GCC 4.6.1, con cualquier opción de dialecto. Solo funciona si instalo una variable miembro (como 'int a;'), y el error es mucho más preciso: ''const struct Foo 'no tiene un constructor predeterminado proporcionado por el usuario y el constructor implícitamente definido no inicializa' int Foo :: a'' –