logoalt Hacker News

szmarczakyesterday at 3:40 PM1 replyview on HN

No because the object does not exist after std::launder. It only exists after std::start_lifetime_as. The bytes being there says nothing about the object, per the C++ standard.


Replies

jandrewrogersyesterday at 4:06 PM

The compiler will create an implicit lifetime type at the memmove destination as required to give it defined behavior. Technically you don't even need std::launder, it is just far more convenient than the alternative.