Formatted read consumes input
monarch_dodra
monarchdodra at gmail.com
Fri Sep 7 11:36:01 PDT 2012
On Friday, 7 September 2012 at 18:15:00 UTC, Steven Schveighoffer
wrote:
>
> Well, this does work. But I don't like that the semantics
> depend on whether the value is an rvalue or not.
>
> Note that even ranges that are true input ranges (i.e. a file)
> still consume their data, even as rvalues, there is no way
> around it.
>
> -Steve
Yes, but that is another issue, it is a "copy" vs "save" semantic
issue. In theory, one should assume that *even* with pass by
value, if you want your range to not be consumed, you have to
call "save". Most ranges are value types, so we tend to forget
it. std.algorithm had a few save-related bugs like that as a
matter of fact.
But, contrary to post 1, that is not the actual issue being fixed
here. It is merely a "compile with unnamed" fix:
formattedRead(file.save, ...)
And now it compiles fine. AND the range is saved. That's it.
Nothing more, nothing less.
...
That's *if* file provides "save". I do not know much about
file/stream handling in D, but you get my "save" point.
More information about the Digitalmars-d
mailing list