[reverse.iter.requirements]

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

## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#reverse.iter.requirements)

### 24.5.1 Reverse iterators [[reverse.iterators]](reverse.iterators#reverse.iter.requirements)

#### 24.5.1.3 Requirements [reverse.iter.requirements]

[1](#1)

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

The template parameterIterator shall either meet the requirements of a*Cpp17BidirectionalIterator* ([[bidirectional.iterators]](bidirectional.iterators "24.3.5.6 Bidirectional iterators"))
or model[bidirectional_iterator](iterator.concept.bidir#concept:bidirectional_iterator "24.3.4.12 Concept bidirectional_­iterator [iterator.concept.bidir]") ([[iterator.concept.bidir]](iterator.concept.bidir "24.3.4.12 Concept bidirectional_­iterator"))[.](#1.sentence-1)

[2](#2)

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

Additionally,Iterator shall either meet the requirements of a*Cpp17RandomAccessIterator* ([[random.access.iterators]](random.access.iterators "24.3.5.7 Random access iterators"))
or model[random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_­access_­iterator [iterator.concept.random.access]") ([[iterator.concept.random.access]](iterator.concept.random.access "24.3.4.13 Concept random_­access_­iterator"))
if the definitions of any of the members

- [(2.1)](#2.1)

operator+,operator-,operator+=,operator-= ([[reverse.iter.nav]](reverse.iter.nav "24.5.1.7 Navigation")), or

- [(2.2)](#2.2)

operator[] ([[reverse.iter.elem]](reverse.iter.elem "24.5.1.6 Element access")),

or the non-member operators ([[reverse.iter.cmp]](reverse.iter.cmp "24.5.1.8 Comparisons"))

- [(2.3)](#2.3)

operator<,operator>,operator<=,operator>=,operator-,
oroperator+ ([[reverse.iter.nonmember]](reverse.iter.nonmember "24.5.1.9 Non-member functions"))

are instantiated ([[temp.inst]](temp.inst "13.9.2 Implicit instantiation"))[.](#2.sentence-1)
