Steven Schveighoffer wrote:
On Fri, 29 Jan 2010 10:53:50 -0500, Michel Fortin
<michel.for...@michelf.com> wrote:
On 2010-01-29 10:49:34 -0500, "Steven Schveighoffer"
<schvei...@yahoo.com> said:
ugh... much simpler with a true stream-like range that supports what
is natural for streams:
for(int i = 0; i < count && !range.empty; i++) {
elements ~= range.get();
}
But of course, then this function doesn't work for other range
types. I decided in that discussion long ago that stream ranges
were going to suck.
You can always define a generic take() like this:
E take(R, E)(ref R range) {
E element = range.front;
range.popFront();
return element;
}
This will work for any forward range.
Except stream ranges. I don't get it...
It should work for stream ranges if front() checks the "filled" flag and
eats the next line if false, and popFront clears the "filled" flag.
Andrei