A couple of notes:
MatrixView has opIndex return by ref in order to allow array[i,j] op= v;. The should be done with opIndexOpAssign instead.
With the new extended semantics of opIndex and opSlice, a proper NDArray type can be implemented, with multi-dimensional slicing.
http://dlang.org/operatoroverloading.html