https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119754
Jiang An <de34 at live dot cn> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |de34 at live dot cn --- Comment #5 from Jiang An <de34 at live dot cn> --- It seems that we should do actual construction and destruction for all types during constant evaluation. > However, our implementation just call `::operator new`, that starts lifetime > of > both array and it's elements: This doesn't seem able to be handled in the library side. > Except that `::operator new` does not perform implicit object creation at > compile time per https://eel.is/c++draft/intro.object#14: This restriction is talking about non-allocating `::operator new` (made constexpr in C++26) and user-provided `operator new` that are constexpr. The `operator new` called by std::allocator::allocate is not constexpr yet, while implementations can add necessary magics to it as long as the magics can't be touched by user code.