前向范围
r
要求其迭代器又是前向迭代器,这又要求迭代器作为其自己的哨兵。但是,这是否意味着实际的哨兵类型(例如,r.end()
返回的类型)与迭代器本身的类型相同还是不同?
不,不是,但必须是
__WeaklyEqualityComparableWith
(仅限说明 concept
)由 begin()
返回的迭代器类型,如 std::sentinel_for
concept
. 中所示。
那里的注释也很有趣:
哨兵类型及其对应的迭代器类型不需要建模equality_comparable_with,因为哨兵类型可能无法与自身进行比较,并且它们不需要具有共同的引用类型。