// PR c++/104568 // { dg-do compile { target c++20 } } // { dg-options "" } struct S { int s; constexpr S () : s (0) {} constexpr ~S () {} }; typedef int T[0]; typedef int U[0]; constexpr bool foo () { auto p = new T[2]; auto q1 = &p[0]; auto q2 = &p[1]; auto q3 = &p[2]; delete[] p; return true; } constexpr bool bar () { auto p = new U[2]; auto q1 = &p[0]; auto q2 = &p[1]; auto q3 = &p[2]; delete[] p; return true; } constexpr bool baz () { auto p = new T[0]; auto q1 = &p[0]; delete[] p; return true; } constexpr bool a = foo (); constexpr bool b = bar (); constexpr bool c = baz ();