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.

Reply via email to