default implemented opAssign purity
Maxim Fomin
maxim at maxim-fomin.ru
Sun Dec 2 06:13:33 PST 2012
On Sunday, 2 December 2012 at 13:07:42 UTC, Dan wrote:
> Is the default implemented opAssign really pure and therefore
> should be considered such.
>
> The code below works. If you turn off the static if, it will
> fail with:
>
> Error: pure function 'opAssign.foo' cannot call impure function
> 'opAssign.S.opAssign'.
Default opAssign function is described here:
http://dlang.org/struct.html. It calls dtor and postblit (if any)
which are impure. Even if you mark them pure, you still
implicitly call opAssign which is not marked as pure. This can be
probably enhanced.
>
> Also, in case the answer is no and default implemented opAssign
> must remain impure, is there a standard way, in a member
> function to do like:
>
> auto ref opAssign(S other) pure {
> blit other into this
> call this(this)
> }
>
> Thanks
> Dan
>
Are you looking for this http://dpaste.dzfl.pl/7ee27db2 ?
More information about the Digitalmars-d-learn
mailing list