Should we just redefine random access ranges such that they must either have a length or be infinite? I'm trying to improve the unit tests in std.range in preparation for some bug fixing and consistency improvements and I'm finding the mother lode of bugs in the process (which I'll file or fix relatively soon). I basically made a dummy range template, made a tuple of instantiations with every combination of (ref, non-ref returns), (length, no length) and (input, forward, bidirectional, random access) and tried to instantiate the higher order ranges with every one of these that made sense. One recurring theme is that the case of a random access range that isn't infinite and doesn't have a length is not properly dealt with.

Since I can't imagine how a range could offer O(1) random access w/o either knowing its length or being infinite, I suggest we just add this requirement to the definition of a random access range and be done with it. Counterexamples?
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to