Lines Matching refs:_Iter
38 template<class _Iter>
39 requires requires { typename _Iter::iterator_concept; }
40 struct __counted_iterator_concept<_Iter> {
41 using iterator_concept = typename _Iter::iterator_concept;
47 template<class _Iter>
48 requires requires { typename _Iter::iterator_category; }
49 struct __counted_iterator_category<_Iter> {
50 using iterator_category = typename _Iter::iterator_category;
56 template<indirectly_readable _Iter>
57 struct __counted_iterator_value_type<_Iter> {
58 using value_type = iter_value_t<_Iter>;
61 template<input_or_output_iterator _Iter>
63 : public __counted_iterator_concept<_Iter>
64 , public __counted_iterator_category<_Iter>
65 , public __counted_iterator_value_type<_Iter>
68 _LIBCPP_NO_UNIQUE_ADDRESS _Iter __current_ = _Iter();
69 iter_difference_t<_Iter> __count_ = 0;
71 using iterator_type = _Iter;
72 using difference_type = iter_difference_t<_Iter>;
75 constexpr counted_iterator() requires default_initializable<_Iter> = default;
78 constexpr counted_iterator(_Iter __iter, iter_difference_t<_Iter> __n)
84 requires convertible_to<const _I2&, _Iter>
90 requires assignable_from<_Iter&, const _I2&>
99 constexpr const _Iter& base() const& noexcept { return __current_; }
102 constexpr _Iter base() && { return _VSTD::move(__current_); }
105 constexpr iter_difference_t<_Iter> count() const noexcept { return __count_; }
115 requires __dereferenceable<const _Iter>
123 requires contiguous_iterator<_Iter>
150 requires forward_iterator<_Iter>
160 requires bidirectional_iterator<_Iter>
169 requires bidirectional_iterator<_Iter>
177 constexpr counted_iterator operator+(iter_difference_t<_Iter> __n) const
178 requires random_access_iterator<_Iter>
185 iter_difference_t<_Iter> __n, const counted_iterator& __x)
186 requires random_access_iterator<_Iter>
192 constexpr counted_iterator& operator+=(iter_difference_t<_Iter> __n)
193 requires random_access_iterator<_Iter>
202 constexpr counted_iterator operator-(iter_difference_t<_Iter> __n) const
203 requires random_access_iterator<_Iter>
208 template<common_with<_Iter> _I2>
217 friend constexpr iter_difference_t<_Iter> operator-(
224 friend constexpr iter_difference_t<_Iter> operator-(
231 constexpr counted_iterator& operator-=(iter_difference_t<_Iter> __n)
232 requires random_access_iterator<_Iter>
243 constexpr decltype(auto) operator[](iter_difference_t<_Iter> __n) const
244 requires random_access_iterator<_Iter>
250 template<common_with<_Iter> _I2>
265 template<common_with<_Iter> _I2>
273 friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const counted_iterator& __i)
275 requires input_iterator<_Iter>
281 template<indirectly_swappable<_Iter> _I2>
292 template<input_iterator _Iter>
293 requires same_as<_ITER_TRAITS<_Iter>, iterator_traits<_Iter>>
294 struct iterator_traits<counted_iterator<_Iter>> : iterator_traits<_Iter> {
295 using pointer = conditional_t<contiguous_iterator<_Iter>,
296 add_pointer_t<iter_reference_t<_Iter>>, void>;