https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66914
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- EDG and Clang both reject it as ambiguous. Looks like a dup of PR 53499 Reduced: extern "C" int puts(const char*); template <typename N> struct A { template <typename T> void operator+(T const&) { puts("member\n"); } }; template <typename N> void operator+(A<N>&, int const& ) { puts("free\n"); } int main() { A<int> a; a + 2; } *** This bug has been marked as a duplicate of bug 53499 ***