std::sentinel_for
定义于头文件 <iterator>
|
||
template<class S, class I> concept sentinel_for = |
(C++20 起) | |
sentinel_for
概念描述的 input_or_output_iterator 与 semiregular 类型间的关系,二者的值代表范围。仅用于阐释的概念 __WeaklyEqualityComparableWith
描述于 equality_comparable 。
语义要求
令 s
与 i
分别表示 S
与 I
类型的值,使得 [i, s)
代表范围。 sentinel_for<S, I>
仅若下列条件成立才得到实现:
- i == s 为良定义。
- 若 bool(i != s) 则
i
可解引用且[++i, s)
代表范围。
==
能随时间而更改。给定迭代器 i
和哨位 s
并使得 [i, s)
代表范围且 i != s ,不要求自增任何等于 i
的迭代器后 [i, s)
继续代表范围(从而这种自增后不再要求 i == s 是良定义的)。
注解
不要求哨位类型与其对应的迭代器类型实现 equality_comparable_with ,因为哨位类型可以不可与自身比较,而且不要求它们拥有共用引用类型。
C++17 起已容许在基于范围的 for
循环中使用异于迭代器类型的哨位类型。