1// Special g++ Options: -w
2
3class A {
4public:
5  virtual ~A(){};
6  virtual int type(void) {
7    return -1;
8  }
9};
10
11class B : public A {
12public:
13  virtual ~B(){};
14};
15
16
17class C0 : public B, public virtual A {
18public:
19  virtual int type(void) {
20    return 0;
21  }
22};
23
24class C1 : public C0
25{
26public:
27  virtual int type(void) {
28    return 1;
29  }
30};
31
32class C2 : public C0 {
33public:
34  virtual int type(void) {
35    return 2;
36  }
37};
38
39main() {
40  C1 *one = new C1;
41
42  if (one->type() != 1)
43    return 1;
44}
45