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

88 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[common.iter.const]
# 24 Iterators library [[iterators]](./#iterators)
## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#common.iter.const)
### 24.5.5 Common iterators [[iterators.common]](iterators.common#common.iter.const)
#### 24.5.5.3 Constructors and conversions [common.iter.const]
[🔗](#lib:common_iterator,constructor)
`constexpr common_iterator(I i);
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5548)
*Effects*: Initializes v_ as if by v_{in_place_type<I>, std::move(i)}[.](#1.sentence-1)
[🔗](#lib:common_iterator,constructor_)
`constexpr common_iterator(S s);
`
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5559)
*Effects*: Initializes v_ as if byv_{in_place_type<S>, std::move(s)}[.](#2.sentence-1)
[🔗](#lib:common_iterator,constructor__)
`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](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5573)
*Hardened preconditions*: x.v_.valueless_by_exception() is false[.](#3.sentence-1)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5577)
*Effects*: Initializes v_ as if byv_{in_place_index<i>, get<i>(x.v_)},
where i is x.v_.index()[.](#4.sentence-1)
[🔗](#lib:operator=,common_iterator)
`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](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5593)
*Hardened preconditions*: x.v_.valueless_by_exception() is false[.](#5.sentence-1)
[6](#6)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5597)
*Effects*: Equivalent to:
- [(6.1)](#6.1)
If v_.index() == x.v_.index(), thenget<i>(v_) = get<i>(x.v_)[.](#6.1.sentence-1)
- [(6.2)](#6.2)
Otherwise, v_.emplace<i>(get<i>(x.v_))[.](#6.2.sentence-1)
where i is x.v_.index()[.](#6.sentence-2)
[7](#7)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5608)
*Returns*: *this[.](#7.sentence-1)