On Thursday, 9 October 2014 at 18:01:27 UTC, John Colvin wrote:
On Thursday, 9 October 2014 at 11:29:14 UTC, bearophile wrote:
Observe:

void main() {
    int[3] a1 = [1, 3, 6];
    int[]  a2 = a1[] * 3;       // line 3, Error
    int[]  a3 = a1.dup[] *= 3;  // line 4, OK?
    int[]  a4 = (a1[] * 3).dup; // line 5, Error
}


Currently the operation in line 4 is accepted:

test.d(3,17): Error: array operation a1[] * 3 without destination memory not allowed test.d(5,18): Error: array operation a1[] * 3 without destination memory not allowed

Is it a good idea to support something like line 5?

Bye,
bearophile

Why not? Looks fine to me, you've explicitly allocated some new memory for the result to sit in, the lack of which is the motivation for lines 3 an 5 being errors.

To clarify: 4 is good, 3 and 5 are not.

Reply via email to