https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54483
--- Comment #13 from Thiago Macieira <thiago at kde dot org> --- (In reply to Andrew Pinski from comment #11) > You still need: > constexpr float A::val; In C++11 mode, yes. C++17 made all static constexpr data members implicitly inline, which change the situation. Inline variables ought to be emitted on use and merged at runtime. This explanation does not change the resolution of this bug report. But if you can update your code to use -std=c++17, gnu++17 or later, then the problem goes away.