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

46 lines
2.3 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.

[const.iterators.alias]
# 24 Iterators library [[iterators]](./#iterators)
## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#const.iterators.alias)
### 24.5.3 Constant iterators and sentinels [[const.iterators]](const.iterators#alias)
#### 24.5.3.2 Alias templates [const.iterators.alias]
[🔗](#concept:constant-iterator)
`template<[indirectly_readable](iterator.concept.readable#concept:indirectly_readable "24.3.4.2Concept indirectly_­readable[iterator.concept.readable]") It>
using [iter_const_reference_t](#lib:iter_const_reference_t "24.5.3.2Alias templates[const.iterators.alias]") =
common_reference_t<const iter_value_t<It>&&, iter_reference_t<It>>;
template<class It>
concept [constant-iterator](#concept:constant-iterator "24.5.3.2Alias templates[const.iterators.alias]") = // exposition only
[input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9Concept input_­iterator[iterator.concept.input]")<It> && [same_as](concept.same#concept:same_as "18.4.2Concept same_­as[concept.same]")<iter_const_reference_t<It>, iter_reference_t<It>>;
template<[input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9Concept input_­iterator[iterator.concept.input]") I>
using [const_iterator](#lib:const_iterator "24.5.3.2Alias templates[const.iterators.alias]") = see below;
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L4207)
*Result*: If I models [*constant-iterator*](#concept:constant-iterator "24.5.3.2Alias templates[const.iterators.alias]"), I[.](#1.sentence-1)
Otherwise, basic_const_iterator<I>[.](#1.sentence-2)
[🔗](#itemdecl:2)
`template<[semiregular](concepts.object#concept:semiregular "18.6Object concepts[concepts.object]") S>
using [const_sentinel](#lib:const_sentinel "24.5.3.2Alias templates[const.iterators.alias]") = see below;
`
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L4219)
*Result*: If S models [input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9Concept input_­iterator[iterator.concept.input]"), const_iterator<S>[.](#2.sentence-1)
Otherwise, S[.](#2.sentence-2)