Lines Matching refs:_Iter

42 template <class _Iter>
45 : public iterator<typename iterator_traits<_Iter>::iterator_category,
46 typename iterator_traits<_Iter>::value_type,
47 typename iterator_traits<_Iter>::difference_type,
48 typename iterator_traits<_Iter>::pointer,
49 typename iterator_traits<_Iter>::reference>
55 _Iter __t; // no longer used as of LWG #2360, not removed due to ABI break
59 static_assert(__is_cpp17_bidirectional_iterator<_Iter>::value || bidirectional_iterator<_Iter>,
64 _Iter current;
66 using iterator_type = _Iter;
68 using iterator_category = _If<__is_cpp17_random_access_iterator<_Iter>::value,
70 typename iterator_traits<_Iter>::iterator_category>;
71 using pointer = typename iterator_traits<_Iter>::pointer;
73 …using iterator_concept = _If<random_access_iterator<_Iter>, random_access_iterator_tag, bidirectio…
74 using value_type = iter_value_t<_Iter>;
75 using difference_type = iter_difference_t<_Iter>;
76 using reference = iter_reference_t<_Iter>;
78 using value_type = typename iterator_traits<_Iter>::value_type;
79 using difference_type = typename iterator_traits<_Iter>::difference_type;
80 using reference = typename iterator_traits<_Iter>::reference;
88 explicit reverse_iterator(_Iter __x) : __t(__x), current(__x) {} in reverse_iterator()
91 !is_same<_Up, _Iter>::value && is_convertible<_Up const&, _Iter>::value
99 !is_same<_Up, _Iter>::value &&
100 is_convertible<_Up const&, _Iter>::value &&
101 is_assignable<_Iter&, _Up const&>::value
113 explicit reverse_iterator(_Iter __x) : current(__x) {} in reverse_iterator()
116 !is_same<_Up, _Iter>::value && is_convertible<_Up const&, _Iter>::value
124 !is_same<_Up, _Iter>::value &&
125 is_convertible<_Up const&, _Iter>::value &&
126 is_assignable<_Iter&, _Up const&>::value
135 _Iter base() const {return current;} in base()
137 reference operator*() const {_Iter __tmp = current; return *--__tmp;}
142 requires is_pointer_v<_Iter> || requires(const _Iter __i) { __i.operator->(); }
144 if constexpr (is_pointer_v<_Iter>) {
178 iter_rvalue_reference_t<_Iter> iter_move(const reverse_iterator& __i) in iter_move()
179 noexcept(is_nothrow_copy_constructible_v<_Iter> && in iter_move()
180 noexcept(ranges::iter_move(--declval<_Iter&>()))) { in iter_move()
185 template <indirectly_swappable<_Iter> _Iter2>
188 noexcept(is_nothrow_copy_constructible_v<_Iter> && in iter_swap()
190 noexcept(ranges::iter_swap(--declval<_Iter&>(), --declval<_Iter2&>()))) { in iter_swap()
198 template <class _Iter>
201 template <class _Iter>
202 struct __is_reverse_iterator<reverse_iterator<_Iter> > : true_type {};
311 template <class _Iter>
313 reverse_iterator<_Iter>
314 operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x)
316 return reverse_iterator<_Iter>(__x.base() - __n);
326 template <class _Iter>
328 reverse_iterator<_Iter> make_reverse_iterator(_Iter __i)
330 return reverse_iterator<_Iter>(__i);
335 template <class _Iter>
336 using __unconstrained_reverse_iterator = reverse_iterator<_Iter>;
361 template <class _Iter>
363 _Iter __iter_;
366 static_assert(__is_cpp17_bidirectional_iterator<_Iter>::value || bidirectional_iterator<_Iter>);
368 using iterator_type = _Iter;
370 …_If<__is_cpp17_random_access_iterator<_Iter>::value, random_access_iterator_tag, __iterator_catego…
371 using pointer = __iterator_pointer_type<_Iter>;
372 using value_type = iter_value_t<_Iter>;
373 using difference_type = iter_difference_t<_Iter>;
374 using reference = iter_reference_t<_Iter>;
378 …_LIBCPP_HIDE_FROM_ABI constexpr explicit __unconstrained_reverse_iterator(_Iter __iter) : __iter_(…
380 _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() const { return __iter_; }
387 if constexpr (is_pointer_v<_Iter>) {
395 iter_rvalue_reference_t<_Iter> iter_move(const __unconstrained_reverse_iterator& __i)
396 noexcept(is_nothrow_copy_constructible_v<_Iter> &&
397 noexcept(ranges::iter_move(--declval<_Iter&>()))) {
481 template <class _Iter>
482 struct __is_reverse_iterator<__unconstrained_reverse_iterator<_Iter>> : true_type {};
486 template <template <class> class _RevIter1, template <class> class _RevIter2, class _Iter>
488 using _UnwrappedIter = decltype(__unwrap_iter_impl<_Iter>::__unwrap(std::declval<_Iter>()));
489 using _ReverseWrapper = _RevIter1<_RevIter2<_Iter> >;
494 …_RevIter2<_Iter>(__unwrap_iter_impl<_Iter>::__rewrap(__orig_iter.base().base(), __unwrapped_iter))…
498 return __unwrap_iter_impl<_Iter>::__unwrap(__i.base().base());
512 template <class _Iter, bool __b>
513 struct __unwrap_iter_impl<reverse_iterator<reverse_iterator<_Iter> >, __b>
514 : __unwrap_reverse_iter_impl<reverse_iterator, reverse_iterator, _Iter> {};
518 template <class _Iter, bool __b>
519 struct __unwrap_iter_impl<reverse_iterator<__unconstrained_reverse_iterator<_Iter>>, __b>
520 : __unwrap_reverse_iter_impl<reverse_iterator, __unconstrained_reverse_iterator, _Iter> {};
522 template <class _Iter, bool __b>
523 struct __unwrap_iter_impl<__unconstrained_reverse_iterator<reverse_iterator<_Iter>>, __b>
524 : __unwrap_reverse_iter_impl<__unconstrained_reverse_iterator, reverse_iterator, _Iter> {};
526 template <class _Iter, bool __b>
527 struct __unwrap_iter_impl<__unconstrained_reverse_iterator<__unconstrained_reverse_iterator<_Iter>>…
528 …ap_reverse_iter_impl<__unconstrained_reverse_iterator, __unconstrained_reverse_iterator, _Iter> {};