C++ 参考手册

位置:首页 > C++ 参考手册 >迭代器库 > std::sentinel_for

  concept sentinel_for =
    std::semiregular<S> &&
    std::input_or_output_iterator<I> &&

    __WeaklyEqualityComparableWith<S, I>;
(C++20 起)

sentinel_for 概念描述的 input_or_output_iteratorsemiregular 类型间的关系,二者的值代表范围。仅用于阐释的概念 __WeaklyEqualityComparableWith 描述于 equality_comparable

语义要求

si 分别表示 SI 类型的值,使得 [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 循环中使用异于迭代器类型的哨位类型。