On Tuesday, 24 May 2016 at 20:58:11 UTC, John Nixon wrote:
On Tuesday, 24 May 2016 at 15:17:37 UTC, Adam D. Ruppe wrote:
On Tuesday, 24 May 2016 at 14:29:53 UTC, John Nixon wrote:
This naively doesn’t seem right because the RHS of an
assignment should not be altered by it.
It's because the char[] being shallow copied still leads to
mutable stuff.
What I typically do here is just add a method `dup` to the
struct that deep copies. Then you do `CS cs = rhs.dup;` when
you want to construct it, like you'd do with a copy of a naked
array.
Thank you for this suggestion, perhaps a slightly neater
workaround.
Or add an explicit constructor:
struct CS {
// ...
this(const CS rhs) { this = rhs; }
}
Then you can write:
auto cs = CS(rhs);