C++ Range based stream
I don't like the name - it ought to be more explicit that it's an input-only range.

Otherwise, it looks just as a range should, with the observation that we omit the usual const iterators, as they don't make sense here.

I think you can avoid repetition of the return type:

std::istream_iterator&lt;T&gt; begin()    {return {stream};}
std::istream_iterator&lt;T&gt; end()      {return {};}