// { dg-do compile } | |
class IObject { | |
public: | |
virtual ~IObject(); | |
}; | |
class A { | |
virtual int m_fn1(); | |
}; | |
class B { | |
public: | |
virtual int m_fn2(B) const; | |
}; | |
class D : IObject, public virtual B {}; | |
class G : public D, A { | |
public: | |
G(A); | |
}; | |
class F : B { | |
friend class C; | |
}; | |
class C { | |
void m_fn3(const IObject &, int &); | |
void m_fn4(const B &, int &); | |
}; | |
A a; | |
void C::m_fn3(const IObject &, int &p2) { | |
G r(a); | |
m_fn4(r, p2); | |
} | |
void C::m_fn4(const B &p1, int &) { | |
F b; | |
p1.m_fn2(b); | |
} | |