https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109126
--- Comment #12 from Jonathan Wakely <redi at gcc dot gnu.org> --- Yes but for the function template case if I want to use it in constexpr I add 'constexpr' and it's implicitly inline. For the variable template specialisation it's already constexpr, and I can't define it non-inline in another TU because it needs to be in a header to use in other constexpr functions. So it has to be inline (or static, which can cause odr violations in headers). But this seems like a language problem not a gcc one.