https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113835
--- Comment #15 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #12) > The __uninitialized_default_n_1<true> specialization assumes that we can use > std::fill_n to assign to objects outside their lifetime. I don't think > that's valid during constant evaluation, is it? No, you're right; I guess I was thinking that for a type with a trivial default constructor, assignment could start the lifetime like it does for a union member, or that allocate would vacuously initialize the elements of an array of such type. One of those being needed because we don't get implicit object creation in constant evaluation.