2.3 KiB
2.3 KiB
[const.iterators.alias]
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 It> using iter_const_reference_t = common_reference_t<const iter_value_t&&, iter_reference_t>;
template concept constant-iterator = // exposition only input_iterator && same_as<iter_const_reference_t, iter_reference_t>;
template<input_iterator I> using const_iterator = see below; `
Result: If I models constant-iterator, I.
Otherwise, basic_const_iterator.
template<[semiregular](concepts.object#concept:semiregular "18.6 Object concepts [concepts.object]") S> using [const_sentinel](#lib:const_sentinel "24.5.3.2 Alias templates [const.iterators.alias]") = see below;
Result: If S models input_iterator, const_iterator.
Otherwise, S.