overload of array operations

Timon Gehr timon.gehr at gmx.ch
Mon Oct 17 09:27:39 PDT 2011


On 10/14/2011 09:43 PM, Jonathan M Davis wrote:
> On Friday, October 14, 2011 15:29:17 Jay Norwood wrote:
>> Jonathan M Davis Wrote:
>>> On Friday, October 14, 2011 11:30:25 Jay Norwood wrote:
>>>> Is it possible to overload array operations
>>>
>>> Please be more specific. Are you asking whether a struct or class can
>>> overload the indexing and slicing operators? If so, the answer is yes.
>>>
>>> http://d-programming-language.org/operatoroverloading.html
>>>
>>> - Jonathan M Davis
>>
>> to be more specific, I'm interested in overloading the vector operations on
>> arrays described at this link, search for "vector operation"
>>
>> http://www.digitalmars.com/d/2.0/arrays.html
>
> You could probably do it if you're fancy, but there's no explicit way to have
> a struct or class operate like that. If you really wanted to though, you could
> overload opSlice on your struct to return a specific type which then overloaded
> opBinary for + and then have that return a new struct with the changed values.
> But that borders on overloaded operator abuse.
>
> Vector operations are really only intended for arrays.
>
> - Jonathan M Davis

I disagree. Operator overloads are there to make types act like built-in 
types, which is what he wants. Overloaded operator abuse is the act of 
creating a type that uses the operators for different semantics than the 
built-in ones.

What you describe is actually close to how the language handles dynamic 
array slices. But reproducing the behavior with operator overloading 
does indeed not work nicely because of type inference. (we'd need a way 
to overload the typeof operator ;))





More information about the Digitalmars-d-learn mailing list