2 // { dg-options "-O2 -std=gnu++11" }
4 template <class reference_type> class A
6 reference_type *m_pBody;
8 A (const A &) { m_pBody->acquire (); }
16 template <class interface_type> class I : C
24 virtual void acquire ();
31 template <class Ifc1> class J : D, public Ifc1
46 F (A<L> const &, int &&);
50 template <class, class> class WeakImplHelper3 : D, B
58 template <class> class G
64 WeakImplHelper3<XUnoTunnel, XEventTarget> ();
70 : mxAttribList (new J<B>), mxCurrentHandler (0), mxDocHandler (0),
74 I<J<B> > mxAttribList;
75 I<int> mxCurrentHandler;
77 I<int> mxTokenHandler;
79 class L : public G<int>
87 template <class interface_type> I<interface_type>::I (interface_type *p1)
89 B *a = static_cast<B *> (static_cast<void *> (p1));
91 _pInterface->acquire ();
93 F::F (A<L> const &p1, int &&) : m_pDocument (p1) { I<K> (new M); }