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)
}
См. также
увеличивает или уменьшает counted_iterator (открытая функция-член) |
|
|
(C++20) | перемещает итератор вперёд (шаблон функции) |
|
(C++20) | вычисляет расстояние между двумя адаптерами итераторов (шаблон функции) |
|
(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