On Monday, 5 March 2018 at 10:57:35 UTC, Jonathan M Davis wrote
(in the article):
The problem is that the entire object must be fully initialized
before
the body of the postblit constructor is run. That means that
any member
variables which are const or immutable are stuck at whatever
they were in
the original object, because it would violate the type system
to mutate them. And if an object is const or immutable, then
that's all of the members.
I think we have a misunderstanding here. According to that, this
would not compile (imports left out):
struct placeAtWorldMap
{ char[] title;
int[2] coordsMicroDeg;
this(this)
{ title = title.dup;
}
}
void main()
{ char[] title = "London bridge".dup;
const place = placeAtWorldMap(title, [51_508_038, -87_693]);
const samePlace = place;
"falling down ".copy(title);
place.title.writeln; // falling down
samePlace.title.writeln; // London bridge
readln;
}
...but it compiles and correctly runs, and I'm happy about that.