Okay, if I try and compile the following program. struct S { @property S save() const { return this; }
int[] _val; } void main() { } I get the error message d.d(5): Error: cannot implicitly convert expression (this) of type const(S) to S If I remove const from save(), then it works, but with const there, it doesn't. If I change _val to int or a struct type which does not contain an array, it works. If I change _val to a struct type which has a member variable which is an array, it doesn't work. From the looks of it, there's something about having an array as a member variable which makes this blow up. Perhaps it has to do with the fact that _val is a reference type and would be shared? Do I need to declare a postplit constructor to fix this? Declaring one doesn't seem to help, but maybe I just don't know how to declare them correctly. I tried this(this) { _val = _val.dup; } and it didn't do any good. Setting _val to null didn't work either. Does anyone have any clues as to what I'm doing wrong? Or is this yet another bug in dmd? - Jonathan M Davis