Fix test-suite fallout of default -Wreturn-type.
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / pr64858.C
blobc03feaf65613d11c2f6749b6da558fc15bc13e57
1 // { dg-do compile }
2 // { dg-options "-O2 -std=gnu++11" }
4 template <class reference_type> class A
6   reference_type *m_pBody;
7 public:
8   A (const A &) { m_pBody->acquire (); }
9 };
10 class B;
11 class C
13 protected:
14   B *_pInterface;
16 template <class interface_type> class I : C
18 public:
19   I (interface_type *);
21 class B
23 public:
24   virtual void acquire ();
26 class D
28 protected:
29   void acquire ();
31 template <class Ifc1> class J : D, public Ifc1
33   void
34   acquire ()
35   {
36     D::acquire ();
37   }
39 class K : B
42 class L;
43 class F
45   A<L> m_pDocument;
46   F (A<L> const &, int &&);
48 class XUnoTunnel;
49 class XEventTarget;
50 template <class, class> class WeakImplHelper3 : D, B
52   void
53   acquire ()
54   {
55     D::acquire ();
56   }
58 template <class> class G
60 public:
61   void
62   acquire ()
63   {
64     WeakImplHelper3<XUnoTunnel, XEventTarget> ();
65   }
67 struct H
69   H ()
70       : mxAttribList (new J<B>), mxCurrentHandler (0), mxDocHandler (0),
71         mxTokenHandler (0)
72   {
73   }
74   I<J<B> > mxAttribList;
75   I<int> mxCurrentHandler;
76   I<int> mxDocHandler;
77   I<int> mxTokenHandler;
79 class L : public G<int>
82 class M : public J<K>
84 public:
85   M ();
87 template <class interface_type> I<interface_type>::I (interface_type *p1)
89   B *a = static_cast<B *> (static_cast<void *> (p1));
90   _pInterface = a;
91   _pInterface->acquire ();
93 F::F (A<L> const &p1, int &&) : m_pDocument (p1) { I<K> (new M); }