73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
[range.slide.sentinel]
|
||
|
||
# 25 Ranges library [[ranges]](./#ranges)
|
||
|
||
## 25.7 Range adaptors [[range.adaptors]](range.adaptors#range.slide.sentinel)
|
||
|
||
### 25.7.30 Slide view [[range.slide]](range.slide#sentinel)
|
||
|
||
#### 25.7.30.4 Class slide_view::*sentinel* [range.slide.sentinel]
|
||
|
||
[ð](#lib:slide_view::sentinel)
|
||
|
||
namespace std::ranges {template<[forward_range](range.refinements#concept:forward_range "25.4.6 Other range refinements [range.refinements]") V>requires [view](range.view#concept:view "25.4.5 Views [range.view]")<V>class slide_view<V>::*sentinel* { sentinel_t<V> *end_* = sentinel_t<V>(); // *exposition only*constexpr explicit *sentinel*(sentinel_t<V> end); // *exposition only*public:*sentinel*() = default; friend constexpr bool operator==(const *iterator*<false>& x, const *sentinel*& y); friend constexpr range_difference_t<V>operator-(const *iterator*<false>& x, const *sentinel*& y)requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<sentinel_t<V>, iterator_t<V>>; friend constexpr range_difference_t<V>operator-(const *sentinel*& y, const *iterator*<false>& x)requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<sentinel_t<V>, iterator_t<V>>; };}
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15524)
|
||
|
||
[*Note [1](#note-1)*:
|
||
|
||
*sentinel* is used
|
||
only when [*slide-caches-first*](range.slide.view#concept:slide-caches-first "25.7.30.2 Class template slide_view [range.slide.view]")<V> is true[.](#1.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:slide_view::sentinel,constructor)
|
||
|
||
`constexpr explicit sentinel(sentinel_t<V> end);
|
||
`
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15536)
|
||
|
||
*Effects*: Initializes *end_* with end[.](#2.sentence-1)
|
||
|
||
[ð](#lib:operator==,slide_view::sentinel)
|
||
|
||
`friend constexpr bool operator==(const iterator<false>& x, const sentinel& y);
|
||
`
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15547)
|
||
|
||
*Returns*: x.*last_ele_* == y.*end_*[.](#3.sentence-1)
|
||
|
||
[ð](#lib:operator-,slide_view::sentinel)
|
||
|
||
`friend constexpr range_difference_t<V>
|
||
operator-(const iterator<false>& x, const sentinel& y)
|
||
requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<sentinel_t<V>, iterator_t<V>>;
|
||
`
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15560)
|
||
|
||
*Returns*: x.*last_ele_* - y.*end_*[.](#4.sentence-1)
|
||
|
||
[ð](#lib:operator-,slide_view::sentinel_)
|
||
|
||
`friend constexpr range_difference_t<V>
|
||
operator-(const sentinel& y, const iterator<false>& x)
|
||
requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<sentinel_t<V>, iterator_t<V>>;
|
||
`
|
||
|
||
[5](#5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15573)
|
||
|
||
*Returns*: y.*end_* - x.*last_ele_*[.](#5.sentence-1)
|