------- Comment #2 from jason at gcc dot gnu dot org 2010-02-09 22:28 ------- Confirmed. 10.3 says that the lookup is unambiguous, just some uses can be ambiguous. In fact, we fail the test in paragraph 13:
struct B1 { void f(); static void f(int); int i; }; 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(); // Ambiguous conversion of this f(0); // Unambiguous (static) f(0.0); // Unambiguous (only one B2) int B1::* mpB1 = &D::i; // Unambiguous - G++ gets this one wrong int D::* mpD = &D::i; // Ambiguous conversion } }; so, changing the subject line and removing the C++0x tag. -- jason at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu dot org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |rejects-valid Last reconfirmed|0000-00-00 00:00:00 |2010-02-09 22:28:30 date| | Summary|[C++0x] Extended sizeof |ambiguous subobject |(referring to non-static |diagnostic given too early |member) rises ambiguity | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41796