On Sunday, 4 November 2012 at 17:38:07 UTC, Andrei Alexandrescu
wrote:
Back to a simpler solution: what's wrong with adding
alternative APIs for certain input ranges? We have byLine,
byChunk, byChunkAsync. We may as well add eachLine, eachChunk,
eachChunkAsync and let the documentation explain the
differences.
Andrei
Yes, please! (<nitpick>Although I don't necessarily agree with
the naming</nitpick>).
I think we should go with transient ranges the same way we went
with "non-size_t index" ranges. Acknowledge that they exist, but
not guarantee their support when passed to Phobos algorithms.
byLine is a perfect example of this: You can use it all you want
in a for loop, but pass it "copy" or "array" at your own risk.
At that point, all we do is "tag" byLine as "Warning:
Transient.", and call it a day. Not as perfectly safe as we'd
want, but good enough, IMO. We then offer "eachLine", which isn't
transient, and everyone is happy.