On Friday, 9 November 2012 at 16:24:31 UTC, Dan wrote:
I'm using (DMD64 D Compiler v2.061) and don't see it, so it
seems moving from v2.060 to v2.061 takes away some useful error
messages which is bad.
Experimenting on dpaste site shows that error message was fixed
in trunk (you can select compiler version there).
I don't think making postblit accept const works - did it for
you? If you just mean "this(const this)" it does make it
compile - but that postblit is not called.
Making parameter to be const solves that problem.
For example, in code below nothing is printed. Maybe there is a
better signature - what did you use? Make postblit this(this)
and it is printed. Back to the other example - it seems only
this(this) is ever recognized and having this(this) is a
problem with associative arrays.
Here is a related thread which in my mind is not resolved.
http://forum.dlang.org/thread/[email protected]#post-jonkbhtibdxjfjethtuo:40forum.dlang.org
Thanks
Dan
import std.stdio;
struct S {
this(const this) { writeln("Is this called"); }
}
void main() {
S x;
const(S) cx;
S x2 = x;
S x3 = cx;
}
Look at this: http://dpaste.dzfl.pl/1f60055d. It is a combination
of original code and code above. It fails to compile, but
commenting this(this) makes dmd happy. Alternatively you can
comment S[S[string]] w1, w2 and everything also works fine.