Lines Matching refs:ranges
1 // <ranges> -*- C++ -*-
25 /** @file include/ranges
49 * @defgroup ranges Ranges
51 * Components for dealing with ranges of elements.
57 namespace ranges
118 { return ranges::begin(_M_derived()) == ranges::end(_M_derived()); }
122 { return ranges::begin(_M_derived()) == ranges::end(_M_derived()); }
125 operator bool() requires requires { ranges::empty(_M_derived()); }
126 { return !ranges::empty(_M_derived()); }
129 operator bool() const requires requires { ranges::empty(_M_derived()); }
130 { return !ranges::empty(_M_derived()); }
134 { return to_address(ranges::begin(_M_derived())); }
140 { return to_address(ranges::begin(_M_derived())); }
146 { return ranges::end(_M_derived()) - ranges::begin(_M_derived()); }
153 { return ranges::end(_M_derived()) - ranges::begin(_M_derived()); }
159 return *ranges::begin(_M_derived());
166 return *ranges::begin(_M_derived());
174 return *ranges::prev(ranges::end(_M_derived()));
183 return *ranges::prev(ranges::end(_M_derived()));
189 { return ranges::begin(_M_derived())[__n]; }
194 { return ranges::begin(_M_derived())[__n]; }
277 : subrange(__r, ranges::size(__r))
286 : subrange{ranges::begin(__r), ranges::end(__r)}
296 : subrange{ranges::begin(__r), ranges::end(__r), __n}
360 ranges::advance(_M_begin, __n);
367 auto __d = __n - ranges::advance(_M_begin, __n, _M_end);
421 } // namespace ranges
423 using ranges::get;
425 namespace ranges
1253 { return ranges::begin(*_M_r); }
1257 { return ranges::end(*_M_r); }
1260 empty() const requires requires { ranges::empty(*_M_r); }
1261 { return ranges::empty(*_M_r); }
1265 { return ranges::size(*_M_r); }
1269 { return ranges::data(*_M_r); }
1335 && (bool)ranges::equal_to{}(*__first1, *__first2))
1408 return ranges::begin(__r) + _M_offset;
1415 _M_offset = __it - ranges::begin(__r);
1511 ranges::end(_M_parent->_M_base),
1552 noexcept(noexcept(ranges::iter_move(__i._M_current)))
1553 { return ranges::iter_move(__i._M_current); }
1557 noexcept(noexcept(ranges::iter_swap(__x._M_current, __y._M_current)))
1559 { ranges::iter_swap(__x._M_current, __y._M_current); }
1576 : _M_end(ranges::end(__parent->_M_base))
1619 auto __it = __detail::find_if(ranges::begin(_M_base),
1620 ranges::end(_M_base),
1630 return _Iterator{this, ranges::end(_M_base)};
1956 { return _Iterator<false>{this, ranges::begin(_M_base)}; }
1962 { return _Iterator<true>{this, ranges::begin(_M_base)}; }
1966 { return _Sentinel<false>{ranges::end(_M_base)}; }
1970 { return _Iterator<false>{this, ranges::end(_M_base)}; }
1976 { return _Sentinel<true>{ranges::end(_M_base)}; }
1982 { return _Iterator<true>{this, ranges::end(_M_base)}; }
1986 { return ranges::size(_M_base); }
1990 { return ranges::size(_M_base); }
2077 return ranges::begin(_M_base);
2081 return counted_iterator{ranges::begin(_M_base), __sz};
2085 return counted_iterator{ranges::begin(_M_base), _M_count};
2094 return ranges::begin(_M_base);
2098 return counted_iterator{ranges::begin(_M_base), __sz};
2102 return counted_iterator{ranges::begin(_M_base), _M_count};
2111 return ranges::begin(_M_base) + size();
2116 return _Sentinel<false>{ranges::end(_M_base)};
2125 return ranges::begin(_M_base) + size();
2130 return _Sentinel<true>{ranges::end(_M_base)};
2136 auto __n = ranges::size(_M_base);
2143 auto __n = ranges::size(_M_base);
2239 { return ranges::begin(_M_base); }
2244 { return ranges::begin(_M_base); }
2248 { return _Sentinel<false>(ranges::end(_M_base),
2254 { return _Sentinel<true>(ranges::end(_M_base),
2278 // ranges::next(begin(base), count, end(base)) is O(1) if _Vp satisfies
2314 auto __it = ranges::next(ranges::begin(_M_base),
2315 _M_count, ranges::end(_M_base));
2327 return ranges::next(ranges::begin(_M_base), _M_count,
2328 ranges::end(_M_base));
2333 { return ranges::end(_M_base); }
2337 { return ranges::end(_M_base); }
2342 const auto __s = ranges::size(_M_base);
2350 const auto __s = ranges::size(_M_base);
2410 auto __it = __detail::find_if_not(ranges::begin(_M_base),
2411 ranges::end(_M_base),
2419 { return ranges::end(_M_base); }
2517 for (; _M_outer != ranges::end(_M_parent->_M_base); ++_M_outer)
2520 _M_inner = ranges::begin(__inner);
2521 if (_M_inner != ranges::end(__inner))
2599 if (++_M_inner == ranges::end(__inner_range))
2627 if (_M_outer == ranges::end(_M_parent->_M_base))
2628 _M_inner = ranges::end(*--_M_outer);
2629 while (_M_inner == ranges::begin(*_M_outer))
2630 _M_inner = ranges::end(*--_M_outer);
2658 noexcept(noexcept(ranges::iter_move(__i._M_inner)))
2659 { return ranges::iter_move(__i._M_inner); }
2663 noexcept(noexcept(ranges::iter_swap(__x._M_inner, __y._M_inner)))
2665 { return ranges::iter_swap(__x._M_inner, __y._M_inner); }
2690 : _M_end(ranges::end(__parent->_M_base))
2738 return _Iterator<__use_const>{this, ranges::begin(_M_base)};
2746 return _Iterator<true>{this, ranges::begin(_M_base)};
2756 ranges::end(_M_base)};
2771 return _Iterator<true>{this, ranges::end(_M_base)};
2835 ranges::equal_to>
2856 { return __current() == ranges::end(_M_parent->_M_base); }
2946 const auto __end = ranges::end(_M_parent->_M_base);
3010 auto __end = ranges::end(_M_i._M_parent->_M_base);
3110 noexcept(noexcept(ranges::iter_move(__i._M_i_current())))
3111 { return ranges::iter_move(__i._M_i_current()); }
3115 noexcept(noexcept(ranges::iter_swap(__x._M_i_current(),
3118 { ranges::iter_swap(__x._M_i_current(), __y._M_i_current()); }
3163 this, ranges::begin(_M_base)};
3166 _M_current = ranges::begin(_M_base);
3174 return _OuterIter<true>{this, ranges::begin(_M_base)};
3181 this, ranges::end(_M_base)};
3190 return _OuterIter<true>{this, ranges::end(_M_base)};
3269 return ranges::begin(_M_base);
3272 (ranges::begin(_M_base));
3279 return ranges::begin(_M_base);
3282 (ranges::begin(_M_base));
3289 return ranges::begin(_M_base) + ranges::size(_M_base);
3292 (ranges::end(_M_base));
3299 return ranges::begin(_M_base) + ranges::size(_M_base);
3302 (ranges::end(_M_base));
3307 { return ranges::size(_M_base); }
3311 { return ranges::size(_M_base); }
3372 auto __it = ranges::next(ranges::begin(_M_base), ranges::end(_M_base));
3380 { return std::make_reverse_iterator(ranges::end(_M_base)); }
3384 { return std::make_reverse_iterator(ranges::end(_M_base)); }
3388 { return std::make_reverse_iterator(ranges::begin(_M_base)); }
3392 { return std::make_reverse_iterator(ranges::begin(_M_base)); }
3396 { return ranges::size(_M_base); }
3400 { return ranges::size(_M_base); }
3438 using _Iter = decltype(ranges::begin(__r).base());
3494 { return _Iterator<false>(ranges::begin(_M_base)); }
3498 { return _Iterator<true>(ranges::begin(_M_base)); }
3502 { return _Sentinel<false>{ranges::end(_M_base)}; }
3506 { return _Iterator<false>{ranges::end(_M_base)}; }
3510 { return _Sentinel<true>{ranges::end(_M_base)}; }
3514 { return _Iterator<true>{ranges::end(_M_base)}; }
3518 { return ranges::size(_M_base); }
3522 { return ranges::size(_M_base); }
3823 } // namespace ranges
3825 namespace views = ranges::views;
3827 template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
3828 struct tuple_size<ranges::subrange<_Iter, _Sent, _Kind>>
3832 template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
3833 struct tuple_element<0, ranges::subrange<_Iter, _Sent, _Kind>>
3836 template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
3837 struct tuple_element<1, ranges::subrange<_Iter, _Sent, _Kind>>
3840 template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
3841 struct tuple_element<0, const ranges::subrange<_Iter, _Sent, _Kind>>
3844 template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
3845 struct tuple_element<1, const ranges::subrange<_Iter, _Sent, _Kind>>