|
6294 | 6294 | constexpr auto begin() requires (!@\exposconcept{simple-view}@<V>)
|
6295 | 6295 | { return @\exposid{iterator}@<false>(ranges::begin(@\exposid{base_}@)); }
|
6296 | 6296 |
|
6297 |
| - constexpr auto begin() const requires @\exposconcept{simple-view}@<V> |
| 6297 | + constexpr auto begin() const requires @\libconcept{range}@<const V> |
6298 | 6298 | { return @\exposid{iterator}@<true>(ranges::begin(@\exposid{base_}@)); }
|
6299 | 6299 |
|
6300 |
| - constexpr auto end() |
| 6300 | + constexpr auto end() requires (!@\exposconcept{simple-view}@<V> && !common_range<V>) |
6301 | 6301 | { return @\exposid{sentinel}@<false>{ranges::end(@\exposid{base_}@)}; }
|
6302 | 6302 |
|
6303 |
| - constexpr auto end() requires common_range<V> |
| 6303 | + constexpr auto end() requires (!@\exposconcept{simple-view}@<V> && common_range<V>) |
6304 | 6304 | { return @\exposid{iterator}@<false>{ranges::end(@\exposid{base_}@)}; }
|
6305 | 6305 |
|
6306 | 6306 | constexpr auto end() const requires range<const V>
|
|
6700 | 6700 |
|
6701 | 6701 | constexpr sentinel_t<@\exposid{Base}@> base() const;
|
6702 | 6702 |
|
6703 |
| - friend constexpr bool operator==(const @\exposid{iterator}@<Const>& x, const @\exposid{sentinel}@& y); |
| 6703 | + template<bool OtherConst> |
| 6704 | + requires @\libconcept{sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
| 6705 | + friend constexpr bool operator==(const @\exposid{iterator}@<OtherConst>& x, const @\exposid{sentinel}@& y); |
6704 | 6706 |
|
| 6707 | + template<bool OtherConst> |
| 6708 | + requires @\libconcept{sized_sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
6705 | 6709 | friend constexpr range_difference_t<@\exposid{Base}@>
|
6706 |
| - operator-(const @\exposid{iterator}@<Const>& x, const @\exposid{sentinel}@& y) |
6707 |
| - requires sized_sentinel_for<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{Base}@>>; |
| 6710 | + operator-(const @\exposid{iterator}@<OtherConst>& x, const @\exposid{sentinel}@& y); |
6708 | 6711 |
|
6709 |
| - friend constexpr range_difference_t<@\exposid{Base}@> |
6710 |
| - operator-(const @\exposid{sentinel}@& x, const @\exposid{iterator}@<Const>& y) |
6711 |
| - requires sized_sentinel_for<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{Base}@>>; |
| 6712 | + template<bool OtherConst> |
| 6713 | + requires @\libconcept{sized_sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
| 6714 | + friend constexpr range_difference_t<@\exposid{maybe-const}@<OtherConst, V>> |
| 6715 | + operator-(const @\exposid{sentinel}@& x, const @\exposid{iterator}@<OtherConst>& y); |
6712 | 6716 | };
|
6713 | 6717 | }
|
6714 | 6718 | \end{codeblock}
|
|
6749 | 6753 |
|
6750 | 6754 | \indexlibrarymember{operator==}{elements_view::sentinel}%
|
6751 | 6755 | \begin{itemdecl}
|
6752 |
| -friend constexpr bool operator==(const @\exposid{iterator}@<Const>& x, const @\exposid{sentinel}@& y); |
| 6756 | +template<bool OtherConst> |
| 6757 | + requires @\libconcept{sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
| 6758 | +friend constexpr bool operator==(const @\exposid{iterator}@<OtherConst>& x, const @\exposid{sentinel}@& y); |
6753 | 6759 | \end{itemdecl}
|
6754 | 6760 |
|
6755 | 6761 | \begin{itemdescr}
|
|
6760 | 6766 |
|
6761 | 6767 | \indexlibrarymember{operator-}{elements_view::sentinel}%
|
6762 | 6768 | \begin{itemdecl}
|
| 6769 | +template<bool OtherConst> |
| 6770 | + requires @\libconcept{sized_sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
6763 | 6771 | friend constexpr range_difference_t<@\exposid{Base}@>
|
6764 |
| - operator-(const @\exposid{iterator}@<Const>& x, const @\exposid{sentinel}@& y) |
6765 |
| - requires sized_sentinel_for<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{Base}@>>; |
| 6772 | + operator-(const @\exposid{iterator}@<OtherConst>& x, const @\exposid{sentinel}@& y); |
6766 | 6773 | \end{itemdecl}
|
6767 | 6774 |
|
6768 | 6775 | \begin{itemdescr}
|
|
6773 | 6780 |
|
6774 | 6781 | \indexlibrarymember{operator-}{elements_view::sentinel}%
|
6775 | 6782 | \begin{itemdecl}
|
6776 |
| -friend constexpr range_difference_t<@\exposid{Base}@> |
6777 |
| - operator-(const @\exposid{sentinel}@& x, const @\exposid{iterator}@<Const>& y) |
6778 |
| - requires sized_sentinel_for<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{Base}@>>; |
| 6783 | +template<bool OtherConst> |
| 6784 | + requires @\libconcept{sized_sentinel_for}@<sentinel_t<@\exposid{Base}@>, iterator_t<@\exposid{maybe-const}@<OtherConst, V>>> |
| 6785 | +friend constexpr range_difference_t<@\exposid{maybe-const}@<OtherConst, V>> |
| 6786 | + operator-(const @\exposid{sentinel}@& x, const @\exposid{iterator}@<OtherConst>& y); |
6779 | 6787 | \end{itemdecl}
|
6780 | 6788 |
|
6781 | 6789 | \begin{itemdescr}
|
|
0 commit comments