2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr59882.C
blobb61f24703d21b5cb86feb8c3b896417f14cd9dd5
1 /* { dg-do compile } */
2 class A;
3 class B {};
4 struct C {
5   virtual void dispatch();
6   int traversal_map_;
7 };
8 template <typename> class F : public virtual C {};
10 struct I : F<A>, F<int> {};
11 struct J : B, I {};
12 class D {};
13 struct 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(); }
24 struct G : D {
25   G(D &, int &p2) : map_(p2) { L(*this, map_); }
26   int &map_;
29 int a;
30 void fn1(D &p1) { G(p1, a); }