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.