https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87066
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- I am not convinced that rejecting new B[1] is a good idea, you could also change the standard to say that it is ok. The destructor is only useful here if, for new B[2], the first B is constructed ok but the constructor of the second throws an exception. If the constructor is noexcept, there is no need for the destructor. And the last subobject of the aggregate does not need a destructor, which for an array of size 1 means no destructor is needed.