名前空間
変種
操作

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

From cppreference.com
< cpp‎ | ranges‎ | take view‎ | sentinel
 
 
Rangesライブラリ
Rangeアダプタ
 
 
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以降)

要素数 N(take_view のコンストラクタに渡された値)の N 番目の要素を指し越しているかどうか、または基盤となるビューの終端に達しているかどうかを比較します。

std::counted_iterator(通常は take_view::begin の呼び出しから取得される)と take_view::sentinel を比較します。

これにより、y が N 番目の要素を指し越している(N は take_view のコンストラクタに渡された数)場合、または基盤となるビューの終端に達している場合に true を返します。
exposition-only のエイリアステンプレート /*add-const-if*/ は次のように定義されます。
template<bool C, class T>
.

using /*add-const-if*/ = std::conditional_t<C, const T, T>;

!= 演算子は operator== から合成される。

目次

これらの関数は、通常の 非修飾または 修飾ルックアップからは見えず、std::ranges::take_view::sentinel<Const> が引数に関連付けられたクラスである場合にのみ、 引数依存の名前探索 (ADL) によって検出されます。

y - [編集] パラメータ
x - 比較するセンチネル

std::counted_iterator を比較します。

[編集] 戻り値

y.count() == 0 || y.base() == x.end_、ここで end_ は基盤となるセンチネルを示します。

[編集]

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
[編集] 不具合報告 C++20 LWG 3449
異なる const 修飾の take_view のイテレータとセンチネルとの比較がサポートされていませんでした。
可能な場合にサポートされるようになりました。
English 日本語 中文(简体) 中文(繁體)