On Sunday, 2 December 2012 at 19:12:46 UTC, Ali Çehreli wrote:
On 12/02/2012 07:50 AM, Dan wrote:

I was going to ask "Is __postblit a part of the language spec" but then I found TypeInfo.postblit:

  http://dlang.org/phobos/object.html#postblit

I hoped the following might work:

        typeid(this).postblit(&this);

But no, it is not pure:

Error: pure function 'opAssign' cannot call impure function 'postblit'

I see that for this postblit:
this(this) { c = c.dup; }

But if I do it like this:
this(this) pure { c = c.dup; }

it seems to honor it (i.e. no compile error): http://dpaste.dzfl.pl/00674ebb

For me the problem is opAssign - I don't want to write it to get pure. I will if I have to - but if I do I don't want to be duping all fields. If I have to do that I'll give up on pure. The reason I'm in this rabbit hole is trying to get a const static and assigning it from a pure function seemed to be the trick to allow it at compile time.

Thanks,
Dan

Reply via email to