template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator==(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
Requires: x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return x.cnt == y.cnt;
constexpr bool operator==(
const counted_iterator<auto>& x, default_sentinel);
constexpr bool operator==(
default_sentinel, const counted_iterator<auto>& x);
Effects: Equivalent to: return x.cnt == 0;
template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator!=(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
constexpr bool operator!=(
const counted_iterator<auto>& x, default_sentinel);
constexpr bool operator!=(
default_sentinel, const counted_iterator<auto>& x);
Requires: For the first overload, x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return !(x == y);
template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator<(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
Requires: x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return y.cnt < x.cnt;
[ Note: The argument order in the Effects element is reversed because cnt counts down, not up. — end note ]
template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator<=(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
Requires: x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return !(y < x);
template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator>(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
Requires: x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return y < x;
template <class I1, class I2>
requires Common<I1, I2>
constexpr bool operator>=(
const counted_iterator<I1>& x, const counted_iterator<I2>& y);
Requires: x and y shall refer to elements of the same sequence ([iterators.counted]).
Effects: Equivalent to: return !(x < y);