std:: incrementable
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовке
<iterator>
|
||
|
template
<
class
I
>
concept incrementable
=
|
(начиная с C++20) | |
Этот концепт определяет требования к типам, которые могут быть инкрементированы с помощью префиксных и постфиксных операторов инкремента, чьи операции инкремента являются сохраняющими равенство , и тип является std::equality_comparable .
В отличие от
std::weakly_incrementable
, который поддерживает только однопроходные алгоритмы, многопроходные однонаправленные алгоритмы могут использоваться с типами, которые моделируют
std::incrementable
.
Семантические требования
I
моделирует
std::incrementable
только если для любых двух инкрементируемых объектов
a
и
b
типа
I
:
- bool ( a == b ) подразумевает bool ( a ++ == b ) , и
- bool ( a == b ) подразумевает bool ( ( ( void ) a ++ , a ) == ++ b ) .
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).
Смотрите также
|
(C++20)
|
определяет, что
semiregular
тип может быть инкрементирован с помощью пре- и постинкрементных операторов
(концепт) |
|
(C++20)
|
определяет, что тип идентичен другому типу
(концепт) |