template<class I2, sentinel_for<I> S2>
  requires sentinel_for<S, I2>
friend constexpr 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(). 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(). 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().