| // { dg-do compile } | |
| int a; | |
| class d | |
| { | |
| public: | |
| virtual unsigned c (); | |
| }; | |
| class e : public d | |
| { | |
| }; | |
| class i | |
| { | |
| void h (); | |
| public: | |
| void | |
| operator= (e *f) | |
| { | |
| j<int>::c (f); | |
| h (); | |
| } | |
| template <class> struct j | |
| { | |
| static void | |
| c (e *g) | |
| { | |
| g->c (); | |
| } | |
| }; | |
| }; | |
| class k; | |
| class l | |
| { | |
| public: | |
| l (int); | |
| k *operator-> (); | |
| }; | |
| class m final : e | |
| { | |
| unsigned c (); | |
| }; | |
| class k | |
| { | |
| public: | |
| virtual int o (e *) = 0; | |
| }; | |
| class H : d, k | |
| { | |
| int o (e *); | |
| i n; | |
| }; | |
| unsigned | |
| m::c () | |
| { | |
| l b = 0; | |
| b->o (this); | |
| return a; | |
| } | |
| int | |
| H::o (e *p) | |
| { | |
| n = p; | |
| return a; | |
| } | |