What's the deal with "Warning: explicit element-wise assignment..."
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Thu Apr 17 05:38:23 PDT 2014
On Wed, 16 Apr 2014 04:05:57 -0400, Kagamin <spam at here.lot> wrote:
> On Tuesday, 15 April 2014 at 15:59:31 UTC, Steven Schveighoffer wrote:
>> Requiring it simply adds unneeded hoops through which you must jump,
>> the left hand side denotes the operation, the right hand side does not
>
> Unfortunately, this particular operation is denoted by both sides.
Not really. The = operator (opAssign) is different from the [] = operator
(opSliceAssign).
I actually am ignorant of how this works under the hood for slices, what
triggers element-wise copy vs. assign. But for custom types, this is how
you would have to do it I think.
>> Note -- it would be nice (and more consistent IMO) if arr[] = range
>> worked identically to arr[] = arr.
>
> Range or array, there are still two ways how it can work. The idea is to
> give the choice to programmer instead of the compiler.
But programmer cannot define new operators on slices.
>
>> Sorry, I had this wrong. The [] on the left hand side is actually part
>> of the []= operator.
>
> There's no such operator. You can assign fixed-size array without slice
> syntax.
Fixed size array is a different type with different semantics from slices.
You cannot assign the pointer/length of a fixed-size array, so opAssign
devolves to opSliceAssign.
-Steve
More information about the Digitalmars-d
mailing list