Files
2025-10-25 03:02:53 +03:00

3.1 KiB
Raw Permalink Blame History

[common.iter.const]

24 Iterators library [iterators]

24.5 Iterator adaptors [predef.iterators]

24.5.5 Common iterators [iterators.common]

24.5.5.3 Constructors and conversions [common.iter.const]

🔗

constexpr common_iterator(I i);

1

#

Effects: Initializes v_ as if by v_{in_place_type, std::move(i)}.

🔗

constexpr common_iterator(S s);

2

#

Effects: Initializes v_ as if byv_{in_place_type, std::move(s)}.

🔗

template<class I2, class S2> requires [convertible_to](concept.convertible#concept:convertible_to "18.4.4Concept convertible_­to[concept.convertible]")<const I2&, I> && [convertible_to](concept.convertible#concept:convertible_to "18.4.4Concept convertible_­to[concept.convertible]")<const S2&, S> constexpr common_iterator(const common_iterator<I2, S2>& x);

3

#

Hardened preconditions: x.v_.valueless_by_exception() is false.

4

#

Effects: Initializes v_ as if byv_{in_place_index, get(x.v_)}, where i is x.v_.index().

🔗

template<class I2, class S2> requires [convertible_to](concept.convertible#concept:convertible_to "18.4.4Concept convertible_­to[concept.convertible]")<const I2&, I> && [convertible_to](concept.convertible#concept:convertible_to "18.4.4Concept convertible_­to[concept.convertible]")<const S2&, S> && [assignable_from](concept.assignable#concept:assignable_from "18.4.8Concept assignable_­from[concept.assignable]")<I&, const I2&> && [assignable_from](concept.assignable#concept:assignable_from "18.4.8Concept assignable_­from[concept.assignable]")<S&, const S2&> constexpr common_iterator& operator=(const common_iterator<I2, S2>& x);

5

#

Hardened preconditions: x.v_.valueless_by_exception() is false.

6

#

Effects: Equivalent to:

  • (6.1)

    If v_.index() == x.v_.index(), thenget(v_) = get(x.v_).

  • (6.2)

    Otherwise, v_.emplace(get(x.v_)).

where i is x.v_.index().

7

#

Returns: *this.