aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CXX/class.derived/class.member.lookup/p11.cpp
blob: e0899b227e69bdd72ac82f8b2ca3a50763342668 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// RUN: %clang_cc1 -fsyntax-only -verify %s

struct B1 {
  void f();
  static void f(int);
  int i; // expected-note 2{{member found by ambiguous name lookup}}
};
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(); // expected-error {{ambiguous conversion from derived class 'D' to base class 'B1'}}
    f(0); // ok
    f(0.0); // ok
    // FIXME next line should be well-formed
    int B1::* mpB1 = &D::i; // expected-error {{non-static member 'i' found in multiple base-class subobjects of type 'B1'}}
    int D::* mpD = &D::i; // expected-error {{non-static member 'i' found in multiple base-class subobjects of type 'B1'}}
  }
};