https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91369
--- Comment #25 from Toni Neubert <lutztonineubert at gmail dot com> --- I get: "deallocation of already deallocated storage" for test2() but compiling just test1() or test2() is just fine. struct a { constexpr a(int* i) : i{i} { } constexpr ~a() { delete[] i; } int* i; }; constexpr a make_a(int size) { return {new int[size]()}; } constexpr bool test1() { make_a(1); return true; } constexpr bool test2() { make_a(1); return true; } static_assert(test1()); static_assert(test2());