1/* { dg-do compile } */ 2class A; 3class B {}; 4struct C { 5 virtual void dispatch(); 6 int traversal_map_; 7}; 8template <typename> class F : public virtual C {}; 9 10struct I : F<A>, F<int> {}; 11struct J : B, I {}; 12class D {}; 13struct L { 14 L(D &, int &p2) : map_(p2) {} 15 virtual void traverse(int &p1) { 16 int &s = p1; 17 names<L>(s, names_); 18 } 19 int &map_; 20 J names_; 21 template <typename> void names(int &, C &p2) { p2.dispatch(); } 22}; 23 24struct G : D { 25 G(D &, int &p2) : map_(p2) { L(*this, map_); } 26 int &map_; 27}; 28 29int a; 30void fn1(D &p1) { G(p1, a); } 31