https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95349
--- Comment #24 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 2 Jun 2020, andrew2085 at gmail dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95349 > > --- Comment #23 from Andrew Downing <andrew2085 at gmail dot com> --- > But gcc already can implement std::start_lifetime_as with no overhead. > https://godbolt.org/z/YdoEcH But it's "correct" only because your testcase is very simple and thus GCCs knowledge is complete, DTRT here. > My intent wasn't to draw attention to std::start_lifetime_as in this bug > report, I only mentioned it as the reason I came up with the original code. My > main focus was intended to be std::launder, which when used in this situation, > breaks something when it should do nothing at all. My thought was that if it > breaks something in this situation, it may break something in other situations > too. Possibly where it is actually required. It really depends on what the requirements on std::launder are. AFAIK it's an optimization barrier for the pointer.