Additionally, if any of the bidirectional or random access traversal
functions are instantiated, the template parameter shall satisfy the
Cpp17BidirectionalIterator requirements (
[bidirectional.iterators])
or
Cpp17RandomAccessIterator requirements (
[random.access.iterators]), respectively
.