24.3.2 describes struct iterator, which didn't exist in the
   original HP STL implementation (the language wasn't rich enough at the
   time).  For backwards compatibility, base classes are provided which
   declare the same nested typedefs:
input_iterator
output_iterator
forward_iterator
bidirectional_iterator
random_access_iterator
24.3.4 describes iterator operation distance, which takes
   two iterators and returns a result.  It is extended by another signature
   which takes two iterators and a reference to a result.  The result is
   modified, and the function returns nothing.