これは、現在の 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++ が厳しすぎるのでしょうか?