// PR c++/96994 // { dg-do run { target c++20 } } struct A { consteval A () { i = 1; } consteval A (int x) : i (x) {} int i = 0; }; struct B { constexpr B () { i = 1; } constexpr B (int x) : i (x) {} int i = 0; }; A const a; constexpr A b; B const c; A const constinit d; A const e = 2; constexpr A f = 3; B const g = 4; A const constinit h = 5; A i; B j; A k = 6; B l = 7; static_assert (b.i == 1 && f.i == 3); int main() { if (a.i != 1 || c.i != 1 || d.i != 1 || e.i != 2 || g.i != 4 || h.i != 5 || i.i != 1 || j.i != 1 || k.i != 6 || l.i != 7) __builtin_abort (); }