PR c++/81917 - ICE with void_t and partial specialization.
[official-gcc.git] / gcc / testsuite / g++.dg / rtti / dyncast6.C
blobbfbf5117dd1aae5755a33d7778a88cf3e1243151
1 // PR c++/57599
3 class A { };
5 class B : public A { };
7 void p()
9   B* b;
11   A* a1;
12   a1 = dynamic_cast<A*>(b);
13   a1 = dynamic_cast<const A*>(b);          // { dg-error "invalid" }
14   a1 = dynamic_cast<volatile A*>(b);       // { dg-error "invalid" }
15   a1 = dynamic_cast<const volatile A*>(b); // { dg-error "invalid" }
17   const A* a2;
18   a2 = dynamic_cast<A*>(b);
19   a2 = dynamic_cast<const A*>(b);
20   a2 = dynamic_cast<volatile A*>(b);       // { dg-error "invalid" }
21   a2 = dynamic_cast<const volatile A*>(b); // { dg-error "invalid" }
23   volatile A* a3;
24   a3 = dynamic_cast<A*>(b);
25   a3 = dynamic_cast<const A*>(b);          // { dg-error "invalid" }
26   a3 = dynamic_cast<volatile A*>(b);
27   a3 = dynamic_cast<const volatile A*>(b); // { dg-error "invalid" }
29   const volatile A* a4;
30   a4 = dynamic_cast<A*>(b);
31   a4 = dynamic_cast<const A*>(b);
32   a4 = dynamic_cast<volatile A*>(b);
33   a4 = dynamic_cast<const volatile A*>(b);
36 void r()
38   B b;
40   A& a1 = dynamic_cast<A&>(b);
41   A& a2 = dynamic_cast<const A&>(b);                // { dg-error "" }
42   A& a3 = dynamic_cast<volatile A&>(b);             // { dg-error "" }
43   A& a4 = dynamic_cast<const volatile A&>(b);       // { dg-error "" }
45   const A& ca1 = dynamic_cast<A&>(b);
46   const A& ca2 = dynamic_cast<const A&>(b);
47   const A& ca3 = dynamic_cast<volatile A&>(b);       // { dg-error "" }
48   const A& ca4 = dynamic_cast<const volatile A&>(b); // { dg-error "" }
50   volatile A& va1 = dynamic_cast<A&>(b);
51   volatile A& va2 = dynamic_cast<const A&>(b);       // { dg-error "" }
52   volatile A& va3 = dynamic_cast<volatile A&>(b);
53   volatile A& va4 = dynamic_cast<const volatile A&>(b);// { dg-error "" }
55   const volatile A& cva1 = dynamic_cast<A&>(b);
56   const volatile A& cva2 = dynamic_cast<const A&>(b);
57   const volatile A& cva3 = dynamic_cast<volatile A&>(b);
58   const volatile A& cva4 = dynamic_cast<const volatile A&>(b);