https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80234
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to tim from comment #0) > The code snippet is about as minimal as I can get it and still reproduce the > error. If I make the destructor non-virtual or get rid of the definition of > foo::name_str, the error disappears. Note, in C++17, the definition of a constexpr static class member is inside of the class, outside of the class is only a useless redeclaration. That said, while the redundant redeclaration is deprecated, it has not been removed from C++ yet and so it is ice-on-valid-code.