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