Testcase: struct B1 { void f(); }; struct B2 { void f(double); };
struct I1 : B1 { }; struct I2 : B1 { }; struct D: I1, I2, B2 { using B1::f; using B2::f; void g() { f(); } }; gcc-4.6: clang-7.C:10:7: error: B1 is an ambiguous base of D clang: t.cc:10:5: error: ambiguous conversion from derived class 'D' to base class 'B1': struct D -> struct I1 -> struct B1 struct D -> struct I2 -> struct B1 f(); ^ Clang prints the hierarchy, which is something that g++ doesn't support (I think). -- Summary: improve diagnostic for ambiguous lookup Product: gcc Version: unknown Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: manu at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44520