operator+,-(ranges::transform_view::iterator)
From cppreference.com
< cpp | ranges | transform view | iterator
| friend constexpr /*iterator*/ operator+( /*iterator*/ i, difference_type n ) requires ranges::random_access_range<Base>; |
(1) | (C++20以降) |
| friend constexpr /*iterator*/ operator+( difference_type n, /*iterator*/ i ) requires ranges::random_access_range<Base>; |
(2) | (C++20以降) |
| friend constexpr /*iterator*/ operator-( /*iterator*/ i, difference_type n ) requires ranges::random_access_range<Base>; |
(3) | (C++20以降) |
| friend constexpr difference_type operator-( const /*iterator*/& x, const /*iterator*/& y ) |
(4) | (C++20以降) |
1,2) イテレータ i を n だけインクリメントしたイテレータを返します。
3) イテレータ i を n だけデクリメントしたイテレータを返します。
4) x と y の間の距離を返します。
これらの関数は、通常の修飾なしまたは修飾ありの検索では見えず、transform_view::iterator<Const> が引数に関連付けられたクラスである場合にのみ、引数依存の検索で見つけることができます。
目次 |
[編集] パラメータ
| i, x, y | - | イテレータ。 |
| n | - | 現在の位置からの相対位置。 |
[編集] 戻り値
parent_ を親の transform_view へのポインタ、current_ を基底となるイテレータとします。
1,2) /*iterator*/{*i.parent_, i.current_ + n}
3) /*iterator*/{*i.parent_, i.current_ - n}
4) x.current_ - y.current_
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3483 | C++20 | transform_view::iterator の差分が過剰に制約されている |
要件が緩和された |