1// { dg-do compile }
2
3class A {
4      virtual unsigned long m_fn1() const;
5        virtual int &m_fn2(unsigned long) const;
6};
7class C : A {
8public:
9      int &m_fn2(unsigned long) const;
10        unsigned long m_fn1() const;
11};
12class B {
13      void m_fn3(const A &, const int &, const C &, int &) const;
14};
15void B::m_fn3(const A &, const int &, const C &, int &) const {
16      C &a(a);
17        for (long b = 0; a.m_fn1(); b++)
18	      a.m_fn2(0);
19}
20