https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89894

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Actually, it's not specific to non-type specializations or even templates.  The
same problem happens with ordinary types.  Non-type template specializations
just exacerbate it.

$ cat z.C && gcc -c -Wall z.C
struct A { };
typedef A B;

typedef A T;
typedef B U;

void h (T) { }
void h (U) { }

z.C:8:6: error: redefinition of ‘void h(U)’
    8 | void h (U) { }
      |      ^
z.C:7:6: note: ‘void h(T)’ previously defined here
    7 | void h (T) { }
      |      ^

Reply via email to