42 lines
2.1 KiB
Markdown
42 lines
2.1 KiB
Markdown
[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)
|