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
cj25     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
c()53 m::c ()
54 {
55   l b = 0;
56   b->o (this);
57   return a;
58 }
59 int
o(e * p)60 H::o (e *p)
61 {
62   n = p;
63   return a;
64 }
65 
66 
67