Yah, I've been cagey about this because I wasn't clear on what range would want to ever return a different type. Recently I realized that an infinite range with random access would want to actually define slicing to return a different type, for the simple reason that after slicing you have a finite range (which is, I'd guess, random access). I'm not sure how important that case is, so I suggest we hang loose until some more evidence comes about.

Andrei

On 2/2/11 6:54 AM, Lars Tandle Kyllingstad wrote:
A while ago I fixed issue 5052, but doing so I unwittingly broke David's
earlier fix for issue 4464.  I believe I have now fixed both issues (not
committed to main Phobos repo yet):

https://github.com/kyllingstad/phobos/commit/3948e3f61403bd7618913c36959158018970011d

While fixing this, I noted that Take!R simply aliases to R when R is a
type that supports slicing.  This assumes that the slice has the same
type as the slicee(?), which doesn't have to be the case -- at least as
far as the compiler or hasSlicing!() are concerned.

It is easy to fix in Take, but I've now discovered that the same
assumption is made in a lot of places: Retro, Stride, Chain... the list
goes on.  Just do a search for hasSlicing, or look for things like

     _input = _input[i .. j];

Fixing it everywhere is likely to be a lot of work.  Do you think it is
worth it, or is this a tiny corner case?

-Lars

_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to