Namespaces
Variants

std:: incrementable

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Определено в заголовке <iterator>
template < class I >

concept incrementable =
std:: regular < I > &&
std:: weakly_incrementable < I > &&
requires ( I i ) {
{ i ++ } - > std:: same_as < I > ;

} ;
(начиная с 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 (если не указано иное).

Смотрите также

определяет, что semiregular тип может быть инкрементирован с помощью пре- и постинкрементных операторов
(концепт)
(C++20)
определяет, что тип идентичен другому типу
(концепт)