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

Reply via email to