std:: weakly_incrementable
|
Определено в заголовке
<iterator>
|
||
|
template
<
class
I
>
concept weakly_incrementable
=
|
(начиная с C++20) | |
Для определения
/*is-signed-integer-like*/
см.
is-integer-like
.
Этот концепт определяет требования к типам, которые могут быть инкрементированы с помощью префиксных и постфиксных операторов инкремента, но эти операции инкремента не обязательно сохраняют равенство , и сам тип не обязан быть std::equality_comparable .
Для типов, удовлетворяющих концепции
std::weakly_incrementable
,
a
==
b
не подразумевает, что
++
a
==
++
b
. Алгоритмы для слабо инкрементируемых типов должны быть однопроходными. Эти алгоритмы могут использоваться с потоками ввода в качестве источника данных через
std::istream_iterator
.
Семантические требования
Для объекта
i
типа
I
,
I
моделирует
std::weakly_incrementable
только если выполняются все следующие условия:
- Выражения ++ i и i ++ имеют одинаковую область определения.
- Если i инкрементируемо, то и ++ i и i ++ увеличивают i .
- Если i инкрементируемо, то std:: addressof ( ++ i ) == std:: addressof ( i ) .
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P2325R3 | C++20 |
default_initializable
was required
|
not required |
Смотрите также
|
(C++20)
|
определяет, что операция инкремента для
weakly_incrementable
типа является
сохраняющей равенство
и что тип является
equality_comparable
(концепт) |