Spec-Zone.ru › C++

std::incrementable

Определено в заголовке <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 концепций стандартной библиотеки, должны быть сохраняющими равенство (кроме случаев, указанных иначе).

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/incrementable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API