PR c++/81917 - ICE with void_t and partial specialization.
[official-gcc.git] / gcc / testsuite / g++.dg / opt / pr71387.C
blob56f4a4d38b4c79b2c9e18f869adfcbb1e8e9059c
1 // PR middle-end/71387
2 // { dg-do compile }
3 // { dg-options "-Og" }
5 struct A
7   A ();
8   inline A (const A &);
9 };
11 struct B
13   explicit B (unsigned long) : b(0), c(1) {}
14   A a;
15   unsigned long b;
16   int c;
19 struct C {};
21 struct D
23   explicit D (const C *) {}
26 struct E : public D
28   E (const C *x) : D(x) {}
29   virtual A foo () const = 0;
30   virtual A bar () const = 0;
33 struct F : public B
35   inline void baz ();
36   F (const E *);
37   const E *f;
40 inline void
41 F::baz ()
43   if (b == 0)
44     a = f->bar ();
45   else
46     a = f->foo ();
49 F::F (const E *) : B(4)
51   baz ();