This code is accepted by other compilers: ``` template<typename T> struct A { void f(); template<typename U> void f(); }; template<> template<typename U> void A<double>::f() { } ``` but GCC complains: ``` error: ambiguous template specialization 'f<>' for 'void A<double>::f()' ``` Demo: https://gcc.godbolt.org/z/sfP5Kzr7Y Related discussion: https://stackoverflow.com/q/56362063/7325599
Dup of bug 39270. *** This bug has been marked as a duplicate of bug 39270 ***
Are you sure that this is a duplicate? Bug 39270 is about explicit instantiation that is erroneously reported by GCC as specialization. And this bug is about rejection of real explicit specialization in special circumstances.
Dup of bug 64063 really. sorry about that. *** This bug has been marked as a duplicate of bug 64063 ***