On Wednesday, 17 February 2021 at 20:44:46 UTC, tsbockman wrote:
On Wednesday, 17 February 2021 at 20:18:53 UTC, Paul Backus
wrote:
On Wednesday, 17 February 2021 at 19:42:00 UTC, tsbockman
wrote:
A copy constructor and opAssign can be used to update
pointers that are relative to &this:
https://dlang.org/spec/struct.html#struct-copy-constructor
Unfortunately this is not enough, because the compiler is free
to implicitly move struct instances in memory any time it
wants to. See the bug report below for more details:
https://issues.dlang.org/show_bug.cgi?id=17448
Until D gets move constructors, structs with interior pointers
should be avoided.
That bug is about postblits, this(this), not copy constructors:
this(ref typeof(this)). Copy constructors were added to the
language specifically to fix those sort of problems.
Nope, Paul is right, the copy ctors don't solve anything in this
regard. Simplest example I could come up with:
https://run.dlang.io/is/TgxyU3