On Thursday, 4 September 2014 at 19:12:27 UTC, Ali Çehreli wrote:
The documentation says "To overload a[], simply define opIndex
with no parameters":
http://dlang.org/operatoroverloading.html#Slice
And it works with some uses of a[]. However, opSlice() seems to
be needed to actually use the returned slice further.
Note that opSlice() also seems to be for backward
compatibility: "For backward compatibility, a[] and a[i..j] can
also be overloaded by implementing opSlice() with no arguments
and opSlice(i, j) with two arguments, respectively. This only
applies for one-dimensional slicing, and dates from when D did
not have full support for multidimensional arrays. This usage
of opSlice is discouraged."
How can I achieve the last line in main() without needing
opSlice()? I am trying to let the Slice type handle opAssign()
and friends.
--8<-- snip --8<--
// This requires opSlice.
c[] = 42;
}
Have you tried opIndexAssign()?