5 #ifndef VCCC_RANGES_VIEWS_BASIC_ISTREAM_VIEW_HPP
6 #define VCCC_RANGES_VIEWS_BASIC_ISTREAM_VIEW_HPP
11 #include <type_traits>
25 template<
typename Val,
typename CharT,
typename Traits,
typename =
void>
26 struct stream_extractable : std::false_type {};
28 template<
typename Val,
typename CharT,
typename Traits>
29 struct stream_extractable<Val, CharT, Traits,
30 void_t<decltype(
std::declval<std::basic_istream<CharT, Traits>&>() >> std::declval<Val&>() )>>
38 template<
typename Val,
typename CharT,
typename Traits = std::
char_traits<CharT>>
49 #if __cplusplus < 202002L
59 : parent_(other.parent_) {
60 other.parent_ =
nullptr;
66 parent_ = other.parent_;
67 other.parent_ =
nullptr;
82 return parent_->value_;
86 return x.parent_ ==
nullptr || x.fail();
103 return parent_->stream_->fail();
128 std::basic_istream<CharT, Traits>* stream_;
#define VCCC_ADDRESSOF_CONSTEXPR
Definition: addressof.hpp:14
Definition: basic_istream_view.hpp:39
constexpr default_sentinel_t end() const noexcept
Definition: basic_istream_view.hpp:119
constexpr auto begin()
Definition: basic_istream_view.hpp:114
VCCC_ADDRESSOF_CONSTEXPR basic_istream_view(std::basic_istream< CharT, Traits > &stream)
Definition: basic_istream_view.hpp:111
helper class template for defining a view, using the curiously recurring template pattern
Definition: view_interface.hpp:78
constexpr VCCC_INLINE_OR_STATIC default_sentinel_t default_sentinel
Definition: default_sentinel_t.hpp:25
std::input_iterator_tag input_iterator_tag
Definition: iterator_tag.hpp:15
std::enable_if_t< std::is_object< T >::value, T * > addressof(T &t) noexcept
Definition: addressof.hpp:33
Definition: matrix.hpp:495
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that an object of a type can be default constructed
Definition: default_initializable.hpp:62
Definition: default_sentinel_t.hpp:23
Definition: iterator_tag.hpp:28
specifies that an object of a type can be moved and swapped
Definition: movable.hpp:58
Definition: basic_istream_view.hpp:45
iterator(const iterator &)=delete
void pointer
Definition: basic_istream_view.hpp:51
iterator(iterator &&other) noexcept
Definition: basic_istream_view.hpp:58
void operator++(int)
Definition: basic_istream_view.hpp:77
input_iterator_tag iterator_concept
Definition: basic_istream_view.hpp:46
friend bool operator==(const iterator &x, default_sentinel_t)
Definition: basic_istream_view.hpp:85
iterator & operator=(const iterator &)=delete
friend bool operator==(default_sentinel_t, const iterator &x)
Definition: basic_istream_view.hpp:93
friend bool operator!=(const iterator &x, default_sentinel_t)
Definition: basic_istream_view.hpp:89
iterator & operator=(iterator &&other) noexcept
Definition: basic_istream_view.hpp:64
Val value_type
Definition: basic_istream_view.hpp:48
Val & reference
Definition: basic_istream_view.hpp:52
friend bool operator!=(default_sentinel_t, const iterator &x)
Definition: basic_istream_view.hpp:97
std::ptrdiff_t difference_type
Definition: basic_istream_view.hpp:47
constexpr iterator(basic_istream_view &parent)
Definition: basic_istream_view.hpp:55
Val & operator*() const
Definition: basic_istream_view.hpp:81
iterator & operator++()
Definition: basic_istream_view.hpp:72