https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89928
--- Comment #1 from Matthias Klose <doko at debian dot org> --- $ cat main.ii template <template <typename> class> struct a; template <template <typename> class T1> struct b { a<T1> c; }; template <template <typename T1, typename T2, typename T3> class F> struct d; template <template <typename P1, typename P2, typename P3> class F> struct d; $ g++ -std=c++17 main.ii main.ii:3:66: error: template parameter 'template<class T1, class T2, class T3> class F' template <template <typename T1, typename T2, typename T3> class F> struct d; ^ main.ii:4:76: error: redeclared here as 'template<class P1, class P2, class P3> class F' template <template <typename P1, typename P2, typename P3> class F> struct d; ^