On 09/09/2014 05:04 PM, Ali Çehreli wrote:
> I have already tied many loose ends. I am currently
> changing the operator overloading chapter to include the more proper
> multi-dimensional indexing and slicing that came with 2.066.
I divided array operator overloading (indexing and slicing) into two
1) I updated the existing Operator Overloading chapter to cover only
single-dimensional uses by
(I specifically took out the now-discouraged opSliceUnary,
opSliceAssign, and opSliceOpAssign.)
(Chuck Allison will be mad at me because I used one of his programming
assignments as an example there: Double-ended queue implemented in terms
of two D slices. :) )
2) I added the multi-dimensional operator overloading to the More
Templates chapter under the section "Using templates in
multi-dimensional operator overloading".
(That is admittedly a curious place for it but multi-dimensional
operator overloading uses tuple template parameters, which are
introduced in that chapter.)
There, I especially noted that the responsibility of opSlice is reduced
to returning simply a Tuple!(size_t, size_t) or an equivalent type.
(In case others have missed it, returning a slice representing all of
the elements of a container is now the responsibility of opIndex that
takes no parameters.)