template<class I2, sentinel_for<I> S2>
requires sentinel_for<S, I2>
friend bool operator==(
const common_iterator& x, const common_iterator<I2, S2>& y);
Preconditions: x.v_.valueless_by_exception() and
y.v_.valueless_by_exception()
are each
false. Returns: true if
i == j,
and otherwise
get<i>(x.v_) == get<j>(y.v_),
where
i is
x.v_.index() and
j is
y.v_.index(). template<class I2, sentinel_for<I> S2>
requires sentinel_for<S, I2> && equality_comparable_with<I, I2>
friend bool operator==(
const common_iterator& x, const common_iterator<I2, S2>& y);
Preconditions: x.v_.valueless_by_exception() and
y.v_.valueless_by_exception()
are each
false. Returns: true if
i and
j are each
1, and otherwise
get<i>(x.v_) == get<j>(y.v_), where
i is
x.v_.index() and
j is
y.v_.index(). template<sized_sentinel_for<I> I2, sized_sentinel_for<I> S2>
requires sized_sentinel_for<S, I2>
friend iter_difference_t<I2> operator-(
const common_iterator& x, const common_iterator<I2, S2>& y);
Preconditions: x.v_.valueless_by_exception() and
y.v_.valueless_by_exception()
are each
false. Returns: 0 if
i and
j are each
1, and otherwise
get<i>(x.v_) - get<j>(y.v_), where
i is
x.v_.index() and
j is
y.v_.index().