命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | ranges‎ | take view‎ | sentinel
 
 
范围库
范围适配器
 
 
friend constexpr bool

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

                const /*sentinel*/& x );
(1) (since 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) (since C++20)

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

如果 y 指向超过第 N 个元素的位置(其中 N 是传递给 take_view 的构造函数 的数字),或者如果到达底层视图的末尾,则返回 true

仅用于演示的别名模板 /*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== 合成 的。

目录

[edit] 参数

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

[edit] 返回值

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

[edit] 示例

[edit] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布行为 正确行为
LWG 3449 C++20 迭代器和哨位之间的比较
不同 const 限定的 take_view 不被支持
在可能的情况下使其受支持