[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]")class slide_view::*sentinel* { sentinel_t *end_* = sentinel_t(); // *exposition only*constexpr explicit *sentinel*(sentinel_t end); // *exposition only*public:*sentinel*() = default; friend constexpr bool operator==(const *iterator*& x, const *sentinel*& y); friend constexpr range_difference_toperator-(const *iterator*& 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]"), iterator_t>; friend constexpr range_difference_toperator-(const *sentinel*& y, const *iterator*& x)requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]"), iterator_t>; };} [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]") is true[.](#1.sentence-1) — *end note*] [🔗](#lib:slide_view::sentinel,constructor) `constexpr explicit sentinel(sentinel_t 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& 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 operator-(const iterator& 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]"), iterator_t>; ` [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 operator-(const sentinel& y, const iterator& x) requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]"), iterator_t>; ` [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L15573) *Returns*: y.*end_* - x.*last_ele_*[.](#5.sentence-1)