| // PR c++/93310 | |
| // { dg-do compile { target c++20 } } | |
| struct A | |
| { | |
| virtual constexpr char f () const | |
| { return 'A'; } | |
| }; | |
| struct B : A | |
| { | |
| char x; | |
| constexpr B () : x (0) | |
| { x = ((A *)this)->f(); } | |
| virtual constexpr char f () const | |
| { return 'B'; } | |
| }; | |
| struct C : B | |
| { | |
| virtual constexpr char f () const | |
| { return 'C'; } | |
| }; | |
| constexpr C c; | |
| static_assert (c.x == 'B'); |