https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97798
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Reduced. Nothing MSP430-specific here. template <typename> struct A; struct B { typedef A<int> type; }; template <typename T> struct A { static const T max = 1 ? 1 << (T) -1 : 0; }; template <typename T> const T A<T>::max; class F {}; template <int N> void operator>(F, int) { static_assert(N <= B::type::max); }