| // PR c++/80831 | |
| // { dg-options -fsyntax-only } | |
| // { dg-do compile { target c++11 } } | |
| class A | |
| { | |
| public: | |
| virtual ~A() { } | |
| }; | |
| class B { }; | |
| class C : public A { }; | |
| template<class J> | |
| class D : public C | |
| { | |
| public: | |
| D() { } | |
| ~D() { } | |
| }; | |
| class E | |
| { | |
| public: | |
| static E& p(); | |
| B q(); | |
| template<class J> | |
| B q(void (J::*r)()) | |
| { | |
| new D<J>(); | |
| return q(); | |
| } | |
| }; | |
| void t() | |
| { | |
| class F | |
| { | |
| public: | |
| virtual void s() { } | |
| }; | |
| E& x = E::p(); | |
| B y = x.q(&F::s); | |
| } |