https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102033
Bug ID: 102033 Summary: template function signature incorrectly drops top-level cv-qualifiers causing template specialization failing to match Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: nickhuang99 at hotmail dot com Target Milestone: --- The following snippet code fails with similar reason as PR101402, but it cannot be fixed with similar way of using *resolve_typename_type* without further improvement of itself. template<class TA> struct A{ template<class TB> using Type=TB[3]; }; template<class TA, class TB> void f(const typename A<TA>::template Type<TB>){} template <> void f<int, char>(const typename A<int>::template Type<char>){} error: template-id 'f<int, char>' for 'void f(const char*)' does not match any template declaration 9 | void f<int, char>(const typename A<int>::template Type<char>){} | ^~~~~~~~~~~~ array-using.cpp:7:6: note: candidate is: 'template<class TA, class TB> void f(typename A<TA>::Type<TB>)' 7 | void f(const typename A<TA>::template Type<TB>){} | ^