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

--- Comment #54 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #53)
> Couldn't you avoid the launder by returning static_cast<T*>(memmove(p, p,
> sizeof(T))) instead? That pointer _does_ point to the new object, doesn't
> it? ... huh, no, memcpy and memmove do not return a pointer to a suitable
> created object. Seems like they could/should.

Hmm, https://eel.is/c++draft/cstring.syn#3 says they implicitly create objects,
but a void* can't be a pointer to a suitable created object.

And then I read https://eel.is/c++draft/expr#static.cast-13 as saying that the
static_cast above returns a pointer to such an implicitly-created object.

Reply via email to