Comment #0 by stanislav.blinov — 2021-11-30T09:52:59Z
Currently, moveEmplace only wipes sources that contain structs with destructors and copy ctors. Basically, its current design assumes programs that use GC and not manual allocations. Seeing as move/moveEmplace are mechanisms to pass ownership at runtime, they really should do a better job on that and wipe any sources that contain pointers (with the exception of context pointers of nested structs). In other words, this:
auto ptr1 = &thing;
auto ptr2 = move(ptr1);
assert(!ptr1); // would fail with current implementation of moveEmplace
Of course, this should extend to all pointers in disguise (static arrays of void, reference types, slices, delegates, and certainly unions).
Comment #1 by robert.schadek — 2024-12-07T13:41:31Z