在C++20中,前向范围的哨兵类型是否保证与其迭代器的类型相同?

问题描述 投票:0回答:1

前向范围

r
要求其迭代器又是前向迭代器,这又要求迭代器作为其自己的哨兵。但是,这是否意味着实际的哨兵类型(例如,
r.end()
返回的类型)与迭代器本身的类型相同还是不同?

c++ iterator c++20
1个回答
3
投票

不,不是,但必须是

__WeaklyEqualityComparableWith
(仅限说明
concept
)由
begin()
返回的迭代器类型,如
std::sentinel_for
concept
.

中所示。

那里的注释也很有趣:

哨兵类型及其对应的迭代器类型不需要建模equality_comparable_with,因为哨兵类型可能无法与自身进行比较,并且它们不需要具有共同的引用类型。

© www.soinside.com 2019 - 2024. All rights reserved.