Spec-Zone.ru › C++

operator-(std::counted_iterator<I>, std::default_sentinel_t)

friend constexpr std::iter_difference_t<I> operator-(
    const counted_iterator& x, std::default_sentinel_t );
(1) (начиная с C++20)
friend constexpr std::iter_difference_t<I> operator-(
    std::default_sentinel_t, const counted_iterator& y );
(2) (начиная с C++20)
1) Возвращает отрицательное расстояние до конца.
2) Возвращает положительное расстояние до конца.

Этот шаблон функции не виден при обычном неквалифицированном или квалифицированном поиске и может быть найден только с помощью поиска, зависящего от аргументов, если std::counted_iterator<I> является ассоциированным классом аргументов.

Параметры

x, y - адаптеры итераторов, разность которых нужно вычислить

Возвращаемое значение

1) -x.count()
2) y.count()

Пример

#include <initializer_list>
#include <iterator>

int main()
{
    constexpr static auto v = {1, 2, 3, 4};
    constexpr std::counted_iterator<std::initializer_list<int>::iterator>
        it{v.begin(), 3};
    constexpr auto d1 = it - std::default_sentinel;
    static_assert(d1 == -3); // (1)
    constexpr auto d2 = std::default_sentinel - it;
    static_assert(d2 == +3); // (2)
}

См. также

operator++operator++(int)operator+=operator+operator--operator--(int)operator-=operator-
увеличивает или уменьшает counted_iterator
(открытая функция-член)
operator+
(C++20)
перемещает итератор вперёд
(шаблон функции)
operator-
(C++20)
вычисляет расстояние между двумя адаптерами итераторов
(шаблон функции)
default_sentinel_t
(C++20)
маркер конца по умолчанию для итераторов, знающих границы своего диапазона
(класс)

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

Spec-Zone.ru

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