operator==(std::ranges::take_view::sentinel<Const>)

来自cppreference.com
< cpp‎ | ranges‎ | take view‎ | sentinel


 
 
范围库
范围适配器
 
 
friend constexpr bool

    operator==( const std::counted_iterator<ranges::iterator_t<Base>>& y,

                const /*sentinel*/& x );
(1) (C++20 起)
template< bool OtherC = !Const >

    requires std::sentinel_for<ranges::sentinel_t<Base>,
                               ranges::iterator_t</*add-const-if*/<OtherC, V>>>
friend constexpr bool
    operator==( const std::counted_iterator<
                          ranges::iterator_t</*add-const-if*/<OtherC, V>>>& y,

                const /*sentinel*/& x );
(2) (C++20 起)

比较 take_view::/*sentinel*/std::counted_iterator(常通过调用 take_view::begin 获得)。

y 指向第 N 个元素后一位置,或抵达了底层视图末尾则为 true,其中 N 为传递给 take_view 的构造函数的数。

仅用于阐释的别名模板 /*add-const-if*/ 定义为
template<bool C, class T>
using /*add-const-if*/ = std::conditional_t<C, const T, T>;

这些函数对常规的无限定有限定查找不可见,而只能在 std::ranges::take_view::sentinel<Const> 为实参的关联类时由实参依赖查找找到。

!= 运算符从 operator== 运算符合成

参数

y - 要比较的 std::counted_iterator
x - 要比较的哨位

返回值

y.count() == 0 || y.base() == x.end_,其中 end_ 代表底层哨位。

示例

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3449 C++20 不支持相异 const 限定的 take_view 的迭代器与哨位间的比较 使得在可能时支持