https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88979
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Oh, so basically this should compile in C++2a: template<typename T> struct A { using type = T::type; A(type); }; template<typename T> A<T>::A(T::type a) {} but it doesn't. It does when I add 'typename' to the out-of-line ctor parameter.