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) (since C++20)
friend constexpr std::iter_difference_t<I> operator-(
    std::default_sentinel_t, const counted_iterator& y );
(2) (since 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-
(C++20)
перемещает или уменьшает итератор
(публичный член-функция)
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/w/cpp/iterator/counted_iterator/operator-2

Spec-Zone.ru

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