constexpr common_iterator(I i);
Effects: Initializes
v_ as if by
v_{in_place_type<I>, std::move(i)}. constexpr common_iterator(S s);
Effects: Initializes
v_ as if by
v_{in_place_type<S>, std::move(s)}. template<class I2, class S2>
requires convertible_to<const I2&, I> && convertible_to<const S2&, S>
constexpr common_iterator(const common_iterator<I2, S2>& x);
Preconditions: x.v_.valueless_by_exception() is
false. Effects: Initializes
v_ as if by
v_{in_place_index<i>, get<i>(x.v_)},
where
i is
x.v_.index(). template<class I2, class S2>
requires convertible_to<const I2&, I> && convertible_to<const S2&, S> &&
assignable_from<I&, const I2&> && assignable_from<S&, const S2&>
common_iterator& operator=(const common_iterator<I2, S2>& x);
Preconditions: x.v_.valueless_by_exception() is
false. Effects: Equivalent to:
- If v_.index() == x.v_.index(), then
get<i>(v_) = get<i>(x.v_).
- Otherwise, v_.emplace<i>(get<i>(x.v_)).
where
i is
x.v_.index().