// P0784R7 // { dg-do compile { target c++20 } } // { dg-additional-options "-fdelete-null-pointer-checks" } struct S { constexpr S () : s (5) {} constexpr S (int x) : s (x) {} int s; }; constexpr bool foo () { int r = 0; S *p = new S (); p->s += 3; r += p->s; delete p; p = new S (12); p->s = p->s * 2; r += p->s; delete p; int *q = new int; *q = 25; r += *q; delete q; q = new int (1); r += *q; if (!q) return false; delete q; q = new int[5]{1,2,3,4,5}; r += q[0] + q[4]; delete[] q; q = new int[4]; q[0] = 6; q[1] = 7; q[3] = 8; r += q[0] + q[1] + q[3]; delete[] q; return r == 5 + 3 + 2 * 12 + 25 + 1 + 1 + 5 + 6 + 7 + 8; } constexpr bool a = foo (); static_assert (a);