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);
^