1 // { dg-do compile }
2 class A
3 {
4 protected:
5   A *m_fn2 (int) const;
6 public:
7   virtual A *m_fn1 (int *) const = 0;
8 };
9 class B : A
10 {
11   B (A *, int, A *);
12   A *m_fn1 (int *) const;
13 };
14 A *
m_fn1(int *)15 B::m_fn1 (int *) const
16 {
17   new B (m_fn2 (0)->m_fn1 (0), 0, m_fn2 (0)->m_fn1 (0));
18   return 0;
19 }
20 
21