[const.iterators.alias] (original) (raw)
24 Iterators library [iterators]
24.5 Iterator adaptors [predef.iterators]
24.5.3 Constant iterators and sentinels [const.iterators]
24.5.3.2 Alias templates [const.iterators.alias]
template<[indirectly_readable](iterator.concept.readable#concept:indirectly%5Freadable "24.3.4.2āConcept indirectly_Āreadableā[iterator.concept.readable]") It> using [iter_const_reference_t](#lib:iter%5Fconst%5Freference%5Ft "24.5.3.2āAlias 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.2āAlias templatesā[const.iterators.alias]") = // _exposition only_ [input_iterator](iterator.concept.input#concept:input%5Fiterator "24.3.4.9āConcept input_Āiteratorā[iterator.concept.input]")<It> && [same_as](concept.same#concept:same%5Fas "18.4.2āConcept same_Āasā[concept.same]")<iter_const_reference_t<It>, iter_reference_t<It>>;template<[input_iterator](iterator.concept.input#concept:input%5Fiterator "24.3.4.9āConcept input_Āiteratorā[iterator.concept.input]") I> using [const_iterator](#lib:const%5Fiterator "24.5.3.2āAlias templatesā[const.iterators.alias]") = _see below_;
Result: If I models constant-iterator, I.
Otherwise, basic_const_iterator<I>.
template<[semiregular](concepts.object#concept:semiregular "18.6āObject conceptsā[concepts.object]") S> using [const_sentinel](#lib:const%5Fsentinel "24.5.3.2āAlias templatesā[const.iterators.alias]") = _see below_;
Result: If S models input_iterator, const_iterator<S>.
Otherwise, S.