https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101221
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2022-01-18 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The code from the attachment is: namespace One { typedef enum { A, B } Type; template <Type type,typename T> class AClass; template <typename T> class AClass<A,T> { }; template <typename T> class AClass<B,T> { }; } typedef One::Type NewType; template <NewType type,typename T> using OtherNew = One::AClass; class BClass { typedef One::Type Type; template <Type type,typename T> using New = One::AClass; }; With -std=gnu++17 we print: 101221.C:16:18: error: missing template arguments after 'AClass<...auto...>' 16 | using OtherNew = One::AClass; | ^~~ 101221.C:4:43: note: 'template<One::Type type, class T> class One::AClass' declared here 4 | template <Type type,typename T> class AClass; | ^~~~~~ 101221.C:23:17: error: missing template arguments after 'AClass<...auto...>' 23 | using New = One::AClass; | ^~~ 101221.C:4:43: note: 'template<One::Type type, class T> class One::AClass' declared here 4 | template <Type type,typename T> class AClass; | ^~~~~~ With -std=gnu++20 we print: 101221.C:16:18: error: 'auto' not allowed in alias declaration 16 | using OtherNew = One::AClass; | ^~~ 101221.C:23:17: error: 'auto' not allowed in alias declaration 23 | using New = One::AClass; | ^~~ Both diagnostics are wrong. Clang prints the same error for C++17 and C++20.