https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83484
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Clang gives (which does not make sense at all): <source>:12:46: error: declaration of constexpr static data member 'High' requires an initializer template<> constexpr Port<7>::Value Port<7>::High; ^ <source>:13:46: error: declaration of constexpr static data member 'Low' requires an initializer template<> constexpr Port<7>::Value Port<7>::Low; ^ 2 errors generated. Of course with -std=c++20 clang gies a reasonable error message: source>:12:46: error: inline variable 'Port<7>::High' is not defined template<> constexpr Port<7>::Value Port<7>::High; ^ <source>:18:7: note: used here if (High == value) ^ <source>:13:46: error: inline variable 'Port<7>::Low' is not defined template<> constexpr Port<7>::Value Port<7>::Low; ^ <source>:26:26: note: used here Port<7>::set (Port<7>::Low); ^