[const.iterators.types]

# 24 Iterators library [[iterators]](./#iterators)

## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#const.iterators.types)

### 24.5.3 Constant iterators and sentinels [[const.iterators]](const.iterators#types)

#### 24.5.3.4 Member types [const.iterators.types]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L4361)

basic_const_iterator<Iterator>​::​iterator_concept is defined as follows:

- [(1.1)](#1.1)

  If Iterator models [contiguous_iterator](iterator.concept.contiguous#concept:contiguous_iterator "24.3.4.14 Concept contiguous_­iterator [iterator.concept.contiguous]"),
then iterator_concept denotes contiguous_iterator_tag[.](#1.1.sentence-1)

- [(1.2)](#1.2)

  Otherwise, if Iterator models [random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_­access_­iterator [iterator.concept.random.access]"),
then iterator_concept denotes random_access_iterator_tag[.](#1.2.sentence-1)

- [(1.3)](#1.3)

  Otherwise, if Iterator models [bidirectional_iterator](iterator.concept.bidir#concept:bidirectional_iterator "24.3.4.12 Concept bidirectional_­iterator [iterator.concept.bidir]"),
then iterator_concept denotes bidirectional_iterator_tag[.](#1.3.sentence-1)

- [(1.4)](#1.4)

  Otherwise, if Iterator models [forward_iterator](iterator.concept.forward#concept:forward_iterator "24.3.4.11 Concept forward_­iterator [iterator.concept.forward]"),
then iterator_concept denotes forward_iterator_tag[.](#1.4.sentence-1)

- [(1.5)](#1.5)

  Otherwise, iterator_concept denotes input_iterator_tag[.](#1.5.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L4380)

The member [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]") iterator_category is defined
if and only if Iterator models [forward_iterator](iterator.concept.forward#concept:forward_iterator "24.3.4.11 Concept forward_­iterator [iterator.concept.forward]")[.](#2.sentence-1)

In that case,basic_const_iterator<Iterator>​::​iterator_category denotes
the type iterator_traits<​Iterator>​::​iterator_category[.](#2.sentence-2)
