------- 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