【发布时间】:2011-12-26 22:03:45
【问题描述】:
使用当前的 MSVC 编译器可以完美编译:
struct Foo
{
} const foo;
但是,使用当前的 g++ 编译器编译失败:
error: uninitialized const 'foo' [-fpermissive]
note: 'const struct Foo' has no user-provided default constructor
如果我自己提供一个默认构造函数,它会起作用:
struct Foo
{
Foo() {}
} const foo;
这是 MSVC 过于宽松的另一种情况,还是 g++ 在这里过于严格?
【问题讨论】:
-
我无法使用任何方言选项在 GCC 4.6.1 上重现此内容。它只有在我安装一个成员变量(如
int a;)时才有效,并且错误更准确:‘const struct Foo’ has no user-provided default constructor and the implicitly-defined constructor does not initialize ‘int Foo::a’ -
@KerrekSB:我所做的只是
g++ foo.cpp,然后g++ --version打印g++ (GCC) 4.6.1。 -
@FredOverflow:对不起,我的意思是 GCC 4.6.2。最近更新了。
标签: c++ visual-c++ g++ constants default-constructor