Skip to content

Commit 586dfed

Browse files
committed
reference/iterator/contiguous_iterator.md: Created new specification
Commit for issue #1424
1 parent 148bb8c commit 586dfed

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

reference/iterator/contiguous_iterator.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ C++20で導入された`contiguous_iterator`は、要素がメモリー上で連
4242
4343
`a, b`を間接参照可能なイテレータ、`c`を間接参照不可能なイテレータとし、`b`は`a`から、`c`は`b`からそれぞれ到達可能であるとする。そのような型`I`のイテレータ`a, b, c`と[`iter_difference_t<I>`](/reference/iterator/iter_difference_t.md)の示す型`D`について次の条件を満たす場合に限って、型`I`は`contiguous_iterator`のモデルである。
4444
45-
- `to_address(a) == addressof(*a)`
46-
- `to_address(b) == to_address(a) + D(b - a)`
47-
- `to_address(c) == to_address(a) + D(c - a)`
45+
## 要件
46+
- C++26: このイテレータの範囲`[i, s)`はポインタ範囲`[to_address(i), to_address(i + ranges::distance(i, s)))`に置き換えて使用することが実装に許可される
47+
- 注:このイテレータをアルゴリズム適用した場合、イテレータのインクリメントが一回しか起こらない可能性があり、個々のインクリメントに対して副作用を起こすことを期待してはならない
48+
- 備考:連続イテレータの範囲に対する操作として、`std::copy()`の実装が`std::memmove()`の呼び出しで完了するなど、イテレータを一つずつ進めるのではなくメモリ操作で高速実装されることを許可するものである
4849
4950
## 例
5051
```cpp example

0 commit comments

Comments
 (0)