https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64455
--- Comment #2 from Ville Voutilainen <ville.voutilainen at gmail dot com> --- Reduced to avoid using type_traits: template<typename Type> constexpr bool IsType = true; template <bool b, class T> struct Test { }; template <class T> struct Test<true, T> { typedef T type; }; template<class T> struct X { typedef typename Test<IsType<T>,T>::type type; }; int main() { X<int>::type t; }