opIndex() may hide opSlice()

XavierAP via Digitalmars-d digitalmars-d at puremagic.com
Thu Mar 9 17:07:33 PST 2017


In their versions without parameters, these two operators would 
be called in the same way. If both are defined, opIndex() is 
called, regardless of lexical definition order, according to my 
test with DMD.

If both (again I'm just talking about the overloads with no 
arguments) are defined within the same type, it's the fault of 
the author. But I would think the compiler should complain.

They can also be inherited, which is sneakier.

The web reference tersely says under its *Slice* Operator 
Overloading chapter [1]:
"To overload a[], simply define opIndex with no parameters."

Should not the overload of opSlice() with no arguments be 
deprecated? Am I missing something?


[1] https://dlang.org/spec/operatoroverloading.html#array-ops


More information about the Digitalmars-d mailing list