1struct A { virtual ~A () {} };
2struct B { virtual ~B () {} };
3struct C { virtual const A *foo (int) const = 0; };
4struct E : public B, public A { };
5struct F : public C
6{
7  virtual const E *foo (int) const;
8};
9void bar (int &);
10
11const E *
12F::foo (int x) const
13{
14  bar (x);
15  return __null;
16}
17