1 // PR c++/80831
2 // { dg-options -fsyntax-only }
3 // { dg-do compile { target c++11 } }
4 
5 class A
6 {
7 public:
~A()8     virtual ~A() { }
9 };
10 
11 class B { };
12 
13 class C : public A { };
14 
15 template<class J>
16 class D : public C
17 {
18 public:
D()19     D() { }
~D()20     ~D() { }
21 };
22 
23 class E
24 {
25 public:
26     static E& p();
27     B q();
28     template<class J>
q(void (J::* r)())29     B q(void (J::*r)())
30     {
31         new D<J>();
32         return q();
33     }
34 };
35 
t()36 void t()
37 {
38   class F
39   {
40   public:
41     virtual void s() { }
42   };
43   E& x = E::p();
44   B y = x.q(&F::s);
45 }
46