According to my reading of the spec, array operations only require [] after the lvalue, not after any of the rvalues. So this should work:

int[3] x, y;
x[] = y * 2; // should work, but currently fails

But in DMD at present, array operations only work if you write [] after _every_ array.
x[] = y[] * 2; // works
.. except in the case of simple assignment.
x[] = y; // works, same as x[] = y[]; (I dislike this behaviour,but...).

Which is correct?
Personally I like the requirement for [], I think it makes the intention much clearer, and gives more potential for future enhancement (eg, things like dot(x[] + y[], z[]) could be made to work). Basically [] plays the role that superscript ~ plays for vectors in mathematics. OTOH this approach makes things more complicated in some respects, and what the spec says does also make sense.
So both approaches are reasonable.

There are several compiler bugs relating to array operations, and almost all relate to this issue. I'd like to fix them, but I need to know which way it is supposed to work.

Reply via email to