Lines Matching refs:_Iter

64   template<class _Pair, class _Iter, class _Sent>
67 constructible_from<_Pair, _Iter, _Sent> &&
68 __convertible_to_non_slicing<_Iter, tuple_element_t<0, _Pair>> &&
71 template<input_or_output_iterator _Iter, sentinel_for<_Iter> _Sent = _Iter,
72 subrange_kind _Kind = sized_sentinel_for<_Sent, _Iter>
75 requires (_Kind == subrange_kind::sized || !sized_sentinel_for<_Sent, _Iter>)
77 : public view_interface<subrange<_Iter, _Sent, _Kind>>
81 static constexpr bool _StoreSize = (_Kind == subrange_kind::sized && !sized_sentinel_for<_Sent, _Iter>);
86 using _Size = conditional_t<_StoreSize, make_unsigned_t<iter_difference_t<_Iter>>, _Empty>;
87 _LIBCPP_NO_UNIQUE_ADDRESS _Iter __begin_ = _Iter();
93 subrange() requires default_initializable<_Iter> = default;
96 constexpr subrange(__convertible_to_non_slicing<_Iter> auto __iter, _Sent __sent)
102 constexpr subrange(__convertible_to_non_slicing<_Iter> auto __iter, _Sent __sent,
103 make_unsigned_t<iter_difference_t<_Iter>> __n)
107 if constexpr (sized_sentinel_for<_Sent, _Iter>)
108 _LIBCPP_ASSERT((__end_ - __begin_) == static_cast<iter_difference_t<_Iter>>(__n),
114 __convertible_to_non_slicing<iterator_t<_Range>, _Iter> &&
124 __convertible_to_non_slicing<iterator_t<_Range>, _Iter> &&
133 requires __convertible_to_non_slicing<iterator_t<_Range>, _Iter> &&
136 constexpr subrange(_Range&& __range, make_unsigned_t<iter_difference_t<_Iter>> __n)
142 requires __pair_like_convertible_from<_Pair, const _Iter&, const _Sent&>
149 constexpr _Iter begin() const requires copyable<_Iter> {
153 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter begin() requires (!copyable<_Iter>) {
167 constexpr make_unsigned_t<iter_difference_t<_Iter>> size() const
176 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange next(iter_difference_t<_Iter> __n = 1) const&
177 requires forward_iterator<_Iter>
184 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange next(iter_difference_t<_Iter> __n = 1) && {
189 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange prev(iter_difference_t<_Iter> __n = 1) const
190 requires bidirectional_iterator<_Iter>
198 constexpr subrange& advance(iter_difference_t<_Iter> __n) {
199 if constexpr (bidirectional_iterator<_Iter>) {
215 template<input_or_output_iterator _Iter, sentinel_for<_Iter> _Sent>
216 subrange(_Iter, _Sent) -> subrange<_Iter, _Sent>;
218 template<input_or_output_iterator _Iter, sentinel_for<_Iter> _Sent>
219 subrange(_Iter, _Sent, make_unsigned_t<iter_difference_t<_Iter>>)
220 -> subrange<_Iter, _Sent, subrange_kind::sized>;
231 template<size_t _Index, class _Iter, class _Sent, subrange_kind _Kind>
232 requires ((_Index == 0 && copyable<_Iter>) || _Index == 1)
234 constexpr auto get(const subrange<_Iter, _Sent, _Kind>& __subrange) {
241 template<size_t _Index, class _Iter, class _Sent, subrange_kind _Kind>
244 constexpr auto get(subrange<_Iter, _Sent, _Kind>&& __subrange) {