1// { dg-do compile } 2class IObject { 3public: 4 virtual ~IObject(); 5}; 6class A { 7 virtual int m_fn1(); 8}; 9class B { 10public: 11 virtual int m_fn2(B) const; 12}; 13class D : IObject, public virtual B {}; 14class G : public D, A { 15public: 16 G(A); 17}; 18class F : B { 19 friend class C; 20}; 21class C { 22 void m_fn3(const IObject &, int &); 23 void m_fn4(const B &, int &); 24}; 25A a; 26void C::m_fn3(const IObject &, int &p2) { 27 G r(a); 28 m_fn4(r, p2); 29} 30void C::m_fn4(const B &p1, int &) { 31 F b; 32 p1.m_fn2(b); 33} 34 35