131
|
1 // { dg-do compile }
|
|
2 int a;
|
|
3 class d
|
|
4 {
|
|
5 public:
|
|
6 virtual unsigned c ();
|
|
7 };
|
|
8 class e : public d
|
|
9 {
|
|
10 };
|
|
11 class i
|
|
12 {
|
|
13 void h ();
|
|
14
|
|
15 public:
|
|
16 void
|
|
17 operator= (e *f)
|
|
18 {
|
|
19 j<int>::c (f);
|
|
20 h ();
|
|
21 }
|
|
22 template <class> struct j
|
|
23 {
|
|
24 static void
|
|
25 c (e *g)
|
|
26 {
|
|
27 g->c ();
|
|
28 }
|
|
29 };
|
|
30 };
|
|
31 class k;
|
|
32 class l
|
|
33 {
|
|
34 public:
|
|
35 l (int);
|
|
36 k *operator-> ();
|
|
37 };
|
|
38 class m final : e
|
|
39 {
|
|
40 unsigned c ();
|
|
41 };
|
|
42 class k
|
|
43 {
|
|
44 public:
|
|
45 virtual int o (e *) = 0;
|
|
46 };
|
|
47 class H : d, k
|
|
48 {
|
|
49 int o (e *);
|
|
50 i n;
|
|
51 };
|
|
52 unsigned
|
|
53 m::c ()
|
|
54 {
|
|
55 l b = 0;
|
|
56 b->o (this);
|
|
57 return a;
|
|
58 }
|
|
59 int
|
|
60 H::o (e *p)
|
|
61 {
|
|
62 n = p;
|
|
63 return a;
|
|
64 }
|
|
65
|
|
66
|