http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50258
Bug #: 50258 Summary: -std=gnu++0x should allow in-class initialization of static const floating types without constexpr Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: jyass...@gcc.gnu.org In c++98 mode, gcc accepts in-class initialization of static const floating members as an extension. This extension have been removed in C++0x mode, even when gnu extensions are specifically requested with -std=gnu++0x. It would be nice to keep the extension, especially since the C++0x draft was only changed to disallow it in the FDIS. $ gcc-4.6 --version gcc-4.6 (GCC) 4.6.1 $ cat test.cc struct Foo { static const double d = 3.14; }; const double Foo::d; $ gcc-4.6 -c -Wall test.cc $ gcc-4.6 -c -Wall -std=gnu++0x test.cc test.cc:2:27: error: 'constexpr' needed for in-class initialization of static data member 'd' of non-integral type test.cc:4:19: error: 'const double Foo::d' is not a static member of 'struct Foo' test.cc:4:14: error: uninitialized const 'Foo::d' [-fpermissive] $