Additionally, if any of the bidirectional or random access traversal
functions are instantiated, the template parameter shall meet the
requirements for a Bidirectional Iterator (
[bidirectional.iterators])
or a Random Access Iterator (
[random.access.iterators]), respectively
.