[Bug c++/95349] Using std::launder(p) produces unexpected behavior where (p) produces expected behavior
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Tue Jun 2 16:23:45 GMT 2020
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.
More information about the Gcc-bugs
mailing list