這將編譯與當前的MSVC編譯器完美的罰款:未初始化的常量
struct Foo
{
} const foo;
但是,它未能與目前克至編譯++編譯器:
error: uninitialized const 'foo' [-fpermissive]
note: 'const struct Foo' has no user-provided default constructor
如果我提供一個默認的構造函數自己,它作品:
struct Foo
{
Foo() {}
} const foo;
這是MSVC的另一種情況是過於寬容,或者g ++太嚴格嗎?
偉大的問題先生溢出。 –
Duplicates:http://stackoverflow.com/questions/5335836/why-a-const-object-of-an-empty-class-cant-be-created http://stackoverflow.com/questions/7411515/why- do-c-require-a-user-provided-default-constructor-to-default-construct-a等等。 – GManNickG
我無法在GCC 4.6.1上使用任何方言選項重現此操作。它只適用於我安裝成員變量(如'int a;'),並且錯誤更加準確:''const struct Foo'沒有用戶提供的默認構造函數,隱式定義的構造函數不會初始化'int Foo :: a'' –