https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91353
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #2) > The quux case: CONSTRUCTOR_NO_CLEARING is cleared here > > 2154 /* The result of a constexpr function must be completely initialized. > */ > 2155 if (TREE_CODE (result) == CONSTRUCTOR) > 2156 clear_no_implicit_zero (result); > > but we can no longer assume that a constexpr constructor has initialized all > the members. I'd think we can still assume it for non-constructors (because if a function returns some aggregate, it went through the lvalue to rvalue conversion and therefore shouldn't refer to uninitialized members). Constructors don't really return the object they are initializing. Though, perhaps we should make a difference between constructors that do have member initializers for all members and those that don't.