5 #ifndef VCCC_RANGES_VIEWS_TAKE_VIEW_HPP
6 #define VCCC_RANGES_VIEWS_TAKE_VIEW_HPP
56 template<
bool NoConst, std::enable_if_t<
conjunction<
62 : end_(
std::move(s.end_)) {}
71 return y.count() == 0 || y.base() == x.end_;
89 template<
bool AntiConst, std::enable_if_t<
conjunction<
97 return y.count() == 0 || y.base() == x.end_;
100 template<
bool AntiConst, std::enable_if_t<
conjunction<
105 friend constexpr
bool
110 template<
bool AntiConst, std::enable_if_t<
conjunction<
115 friend constexpr
bool
120 template<
bool AntiConst, std::enable_if_t<
conjunction<
125 friend constexpr
bool
146 return std::move(base_);
150 template<
typename T = V, std::enable_if_t<
conjunction<
159 template<
typename T = V, std::enable_if_t<
conjunction<
169 template<
typename T = V, std::enable_if_t<
conjunction<
178 template<
typename T =
const V, std::enable_if_t<
conjunction<
187 template<
typename T =
const V, std::enable_if_t<
conjunction<
197 template<
typename T =
const V, std::enable_if_t<
conjunction<
207 template<
typename T = V, std::enable_if_t<
conjunction<
216 template<
typename T = V, std::enable_if_t<
conjunction<
225 template<
typename T = V, std::enable_if_t<
conjunction<
233 template<
typename T =
const V, std::enable_if_t<
conjunction<
238 constexpr
auto end()
const {
242 template<
typename T = V, std::enable_if_t<
conjunction<
251 template<
typename T = V, std::enable_if_t<
conjunction<
262 return (
std::min)(n,
static_cast<decltype(n)
>(count_));
268 return (
std::min)(n,
static_cast<decltype(n)
>(count_));
281 #if __cplusplus >= 201703L
Definition: counted_iterator.hpp:71
Definition: take_view.hpp:48
constexpr sentinel_t< Base > base() const
Definition: take_view.hpp:64
constexpr sentinel(sentinel< NoConst > s)
Definition: take_view.hpp:61
constexpr friend bool operator!=(const sentinel &x, const counted_iterator< iterator_t< Base >> &y)
Definition: take_view.hpp:85
constexpr friend bool operator==(const sentinel &x, const counted_iterator< iterator_t< maybe_const< AntiConst, V >>> &y)
Definition: take_view.hpp:106
constexpr friend bool operator==(const counted_iterator< iterator_t< Base >> &y, const sentinel &x)
Definition: take_view.hpp:69
constexpr friend bool operator!=(const counted_iterator< iterator_t< maybe_const< AntiConst, V >>> &y, const sentinel &x)
Definition: take_view.hpp:116
constexpr friend bool operator==(const counted_iterator< iterator_t< maybe_const< AntiConst, V >>> &y, const sentinel &x)
Definition: take_view.hpp:95
constexpr friend bool operator!=(const counted_iterator< iterator_t< Base >> &y, const sentinel &x)
Definition: take_view.hpp:80
constexpr friend bool operator!=(const sentinel &x, const counted_iterator< iterator_t< maybe_const< AntiConst, V >>> &y)
Definition: take_view.hpp:126
constexpr friend bool operator==(const sentinel &x, const counted_iterator< iterator_t< Base >> &y)
Definition: take_view.hpp:75
constexpr sentinel(sentinel_t< Base > end)
Definition: take_view.hpp:53
Definition: take_view.hpp:43
constexpr V base() const &
Definition: take_view.hpp:141
constexpr default_sentinel_t end() const
Definition: take_view.hpp:247
constexpr auto size() const
Definition: take_view.hpp:266
constexpr auto size()
Definition: take_view.hpp:260
constexpr sentinel< false > end()
Definition: take_view.hpp:229
constexpr default_sentinel_t end()
Definition: take_view.hpp:221
constexpr V base() &&
Definition: take_view.hpp:145
constexpr auto end()
Definition: take_view.hpp:212
constexpr sentinel< true > end() const
Definition: take_view.hpp:255
constexpr auto end() const
Definition: take_view.hpp:238
constexpr auto begin() const
Definition: take_view.hpp:183
constexpr take_view(V base, range_difference_t< V > count)
Definition: take_view.hpp:136
constexpr auto begin()
Definition: take_view.hpp:155
helper class template for defining a view, using the curiously recurring template pattern
Definition: view_interface.hpp:78
constexpr VCCC_INLINE_OR_STATIC detail::min_niebloid min
Definition: min.hpp:90
constexpr VCCC_INLINE_OR_STATIC detail::count_niebloid count
Definition: count.hpp:58
constexpr VCCC_INLINE_OR_STATIC default_sentinel_t default_sentinel
Definition: default_sentinel_t.hpp:25
constexpr take_view< views::all_t< R > > make_take_view(R &&r, range_difference_t< R > count)
Definition: take_view.hpp:277
typename sentinel< R >::type sentinel_t
Definition: sentinel_t.hpp:29
typename ranges::iterator< T >::type iterator_t
Definition: iterator_t.hpp:32
constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin
returns an iterator to the beginning of a range
Definition: begin.hpp:116
constexpr VCCC_INLINE_OR_STATIC detail::size_niebloid size
returns the size of a container or array
Definition: size.hpp:145
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end
returns a sentinel indicating the end of a range
Definition: end.hpp:120
typename range_difference< R >::type range_difference_t
Used to obtain the difference type of the iterator type of range type R.
Definition: range_difference_t.hpp:41
std::integral_constant< bool, v > bool_constant
Definition: bool_constant.hpp:19
std::conditional_t< Const, const V, V > maybe_const
Definition: maybe_const.hpp:16
Definition: matrix.hpp:495
Definition: cxx20_rel_ops.hpp:17
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: conjunction.hpp:22
Models std::convertible_to
Definition: convertible_to.hpp:38
Definition: default_sentinel_t.hpp:23
Definition: negation.hpp:23
Definition: enable_borrowed_range.hpp:17
specifies a range whose iterator type satisfies random_access_iterator
Definition: random_access_range.hpp:48
specifies that a type is a range, that is, it provides a begin iterator and an end sentinel
Definition: range.hpp:53
specifies that a range knows its size in constant time
Definition: sized_range.hpp:38
specifies that a range is a view, that is, it has constant time copy/move/assignment
Definition: view.hpp:31
Definition: sentinel_for.hpp:24