On Mon, 25 Jun 2012 13:26:22 -0400, Mehrdad <[email protected]> wrote:
I feel like isInfinite is useless for typical cases... the only
"infinite" (perhaps I should call it "unbounded" instead?) range I've
ever realistically come across is a stream, like console input or a
network stream.
Of course, isInfinite doesn't make any sense for any type of wrapper
around console input -- is it true or false?
You can't tell, because it depends on whether the input is redirected.
If the console input was redirected, then it would be finite, with a
certain length (the length of the file).
If not, then it would be infinite (er, unbounded).
So IMHO, we should deprecate isInfinite entirely, and instead rely on
length being size_t.max.
Not only would it make more sense, but it would make it possible to
create a random-access wrapper around an input range (like console
input), which lazily fetches its data.
Then you can work with console input like a regular string!
I think you misunderstand an infinite range. There are plenty of truly
infinite ranges available.
An example infinite range:
struct Infinite
{
int x;
@property int front() { return x;}
void popFront() {}
enum empty = false;
}
length has nothing to do with infinite ranges. In fact, infinite ranges
should have no length member.
-Steve