22 Iterators library [iterators]

22.5 Iterator adaptors [predef.iterators]

22.5.1 Reverse iterators [reverse.iterators] Requirements [reverse.iter.requirements]

The template parameter Iterator shall satisfy all the requirements of a Cpp17BidirectionalIterator ([bidirectional.iterators]).
Additionally, Iterator shall satisfy the requirements of a Cpp17RandomAccessIterator ([random.access.iterators]) if any of the members operator+, operator-, operator+=, operator-= ([reverse.iter.nav]), operator[] ([reverse.iter.elem]), or the non-member operators ([reverse.iter.cmp]) operator<, operator>, operator<=, operator>=, operator-, or operator+ ([reverse.iter.nonmember]) are referenced in a way that requires instantiation ([temp.inst]).