C++ named requirements: LegacyContiguousIterator (since C++17)

From cppreference.com

A

LegacyContiguousIterator

is a

LegacyIterator

whose logically adjacent elements are also physically adjacent in memory.

A pointer to an element of an array satisfies all requirements of LegacyContiguousIterator.

Requirements

The type It satisfies LegacyContiguousIterator if

The type It satisfies

LegacyIterator

And, for every

a, a dereferenceable iterator of type It

n, an integral value

such that

a+n is a valid and dereferenceable iterator value

then

*(a+n) is equivalent to *(std::addressof(*a)+n).

Standard library

The following standard library types are

LegacyContiguousIterators

.

array::iterator

and

array::const_iterator

.

basic_string_view::iterator

.

basic_string::iterator

and

basic_string::const_iterator

.

vector::iterator

and

vector::const_iterator

for value_type other than bool.

valarray::iterator

and

valarray::const_iterator

.

Notes

Fancy pointer

to object types are also required to satisfy LegacyContiguousIterator.

LegacyContiguousIterator is replaced with the

contiguous_iterator

concept: iterator types in the standard library that are required to satisfy LegacyContiguousIterator in C++17 are required to model contiguous_iterator in C++20.

(since C++20)See also