# std::experimental::ranges::Sentinel

< cpp‎ | experimental‎ | ranges

定义于头文件 `<experimental/ranges/iterator>` |  |
template < class S, class I > concept bool Sentinel = ranges::Semiregular<S> && ranges::Iterator<I> && ranges::WeaklyEqualityComparableWith<S, I>; |  | (范围 TS)

`Sentinel` 概念描述其值代表范围的 `Iterator` 类型与 `Semiregular` 类型间的关系。

令 `s` 与 `i` 分别表示 `S` 与 `I` 类型的值，使得 `[i, s)` 代表范围。 `Sentinel<S, I>` 仅若下列条件成立才得到满足：

- i == s 为良定义。
- 若 bool(i != s) 则 `i` 可解引用且 `[++i, s)` 代表范围。

`==` 能随时间而更改。给定迭代器 `i` 和哨位 `s` 并使得 `[i, s)` 代表范围且 i != s ，不要求自增任何等于 `i` 的迭代器后 `[i, s)` 继续代表范围（从而这种自增后不再要求 i == s 是良定义的）。