On Sat, Aug 09, 2014 at 08:43:32PM +0000, Remi Thebault via Digitalmars-d-learn wrote: > Hello D-community > > Sorry to dig an old post, but I have the exact same need. > I have C++ background and I started to use D a few days ago only > (a pity I didn't start sooner!) > > My needs are mostly around numerical calculations. I have a safe > and efficient matrix type in C++ that I am porting to D. > > Implementation is really easier, no doubt. > I have coded slicing following this page > http://dlang.org/operatoroverloading.html#Slice > but the code doesn't compile. [...] > slice opSlice(uint from, uint to) > { > return slice(from, to-from); > }
You need opSlice to take a compile-time integer argument to determine which dimension you're slicing. Something like this: slice opSlice(size_t dim)(uint from, uint to) { // In this case it's not necessary to actually use dim, but // the lowering does translate to opSlice!0(...). Defining // opSlice without dim will only work for 1D arrays. return slice(from, to-from); } [...] > // m3 should refer to the same slice as m2 > auto m3 = m[2..5, 2..4]; // <- compiler syntax error is here [...] I think you need 2.066 or later to get this to work. After adding (size_t dim) to opSlice, your code compiles fine with git HEAD. T -- Give a man a fish, and he eats once. Teach a man to fish, and he will sit forever.