https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124121

--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 19 Feb 2026, redi at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124121
> 
> --- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #4)
> > Not sure what inplace_vector is for ...
> 
> std::vector that uses internal storage, not heap allocations.
> 
> So std::inplace_vector<T, N> stores between 0 and N objects of type T. It
> contains
> 
> union {
>   T _M_elems[N];
> };
> 
> and we do not start the lifetime of the entire array, because we want it to
> contain zero objects initially. The start_lifetime_as_array call creates the
> array but not its subobjects, so we just have an empty shell that we can then
> construct individual T objects into as the inplace_vector grows.

OK, but why would you need that asm() barrier there then?  What's
the semantic of a started lifetime of something with undefined state?

Wasn't std::start_lifetime_as supposed to view a defined bit pattern
as a differnet type?

Reply via email to