[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)