On Tue, 15 Apr 2014 11:47:24 -0400, bearophile <bearophileh...@lycos.com>
wrote:
Andrei Alexandrescu:
This doesn't quite explain much. -- Andrei
Look at the issue:
https://issues.dlang.org/show_bug.cgi?id=7444
I agree with Andrei, and the rejection of the change.
On the left hand side, the [] operator is special *for arrays* in that it
denotes you want to do an element-wise copy. On the right hand side, this
is not the case, [] is simply an operator. It's a no-op if the rhs is an
array, since [] just gets the array again.
Requiring it simply adds unneeded hoops through which you must jump, the
left hand side denotes the operation, the right hand side does not, and in
fact, this causes problems with types that overload [] to return an array
(a very logical operation).
In particular, this would case issues with dcollections' ArrayList which
returns a slice when doing []. The other example from Benjamin is
essentially the same thing.
Note -- it would be nice (and more consistent IMO) if arr[] = range worked
identically to arr[] = arr.
-Steve