Reading about D: few questions

Andrew Wiley wiley.andrew.j at
Sat Dec 24 09:18:26 PST 2011

2011/12/24 Mr. Anonymous <mailnew4ster at>:
> On 24.12.2011 19:01, Denis Shelomovskij wrote:
>> 23.12.2011 22:51, bearophile пишет:
>>>> ++a[] works, but a[]++ doesn't.
>>> Already known compiler bug.
>> Is it a joke? Array expression in D are for performance reasons to
>> generate x2-x100 faster code without any compiler optimisations. Link to
>> one of these epic comments (even x100 more epic because of '%' use
>> instead of 'x###'):
>> But `a[]++` should store a copy of `a`, increment elements and return
>> stored copy. It is hidden GC allocation. We already have a silent
>> allocation in closures, but here a _really large_ peace of data can be
>> allocated. Yes, this allocation sometimes can be optimized out but not
>> always.
>> IMHO, D should not have `a[]++` operator.
> Why should it store a copy? o_O
> I also don't see any allocations in the code on the URL above.

int a_orig = a++;
int[] arr_orig = arr[]++;

If ++ is going to be applied to an array, it needs to have the same
meaning as it does elsewhere. After this operation, arr_orig and arr
must refer to different arrays for that to be true.

More information about the Digitalmars-d-learn mailing list