Files
cppdraft_translate/cppdraft/range/istream/view.md
2025-10-25 03:02:53 +03:00

2.2 KiB
Raw Blame History

[range.istream.view]

25 Ranges library [ranges]

25.6 Range factories [range.factories]

25.6.6 Istream view [range.istream]

25.6.6.2 Class template basic_istream_view [range.istream.view]

🔗

namespace std::ranges {template<class Val, class CharT, class Traits>concept stream-extractable = // exposition onlyrequires(basic_istream<CharT, Traits>& is, Val& t) { is >> t; }; template<movable Val, class CharT, class Traits = char_traits>requires default_initializable &&stream-extractable<Val, CharT, Traits>class basic_istream_view : public view_interface<basic_istream_view<Val, CharT, Traits>> {public:constexpr explicit basic_istream_view(basic_istream<CharT, Traits>& stream); constexpr auto begin() {*stream_ >> value_; return iterator{this}; }constexpr default_sentinel_t end() const noexcept; private:// [range.istream.iterator], class basic_istream_view::iteratorstruct iterator; // exposition only basic_istream<CharT, Traits> stream_; // exposition only Val value_ = Val(); // exposition only};}

🔗

constexpr explicit basic_istream_view(basic_istream<CharT, Traits>& stream);

1

#

Effects: Initializes stream_ with addressof(stream).

🔗

constexpr default_sentinel_t end() const noexcept;

2

#

Effects: Equivalent to: return default_sentinel;