https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111301
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note the float case is actually supposed to be rejected without a const for the same reason as the int ... GCC had an extension which allowed `const static float` being initialized `in-class initialization` which was removed (well rather allowed only with -fpermissive ) in GCC 4.7. Looks like the change which removed the extension changed how non-const static initialized for non-const errors out ...