http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54376
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-08-25 19:50:30 UTC --- Clang and EDG accept the reduced testcase, but every GCC I tried back to 4.1.2 rejects it, with a different error for 4.1.2: r.cc:10: error: ambiguous overload for 'operator==' in 'x1 == x1' r.cc:3: note: candidates are: bool operator==(x<T>, x<T>) [with T = int, <template-parameter-1-1> = int] r.cc:3: note: bool operator==(x<T>, x<T>) [with T = int, <template-parameter-1-1> = double] r.cc:11: error: ambiguous overload for 'operator==' in 'x2 == x2' r.cc:3: note: candidates are: bool operator==(x<T>, x<T>) [with T = double, <template-parameter-1-1> = int] r.cc:3: note: bool operator==(x<T>, x<T>) [with T = double, <template-parameter-1-1> = double]