The hash iterators are of the forward type. You can increment them via prefix or postfix ++, but you can not decrement them. This is compatible with our previous implementation of the hash containers, and with the hash containers provided by SGI. But the hash iterators provided by Microsoft are bidirectional. Code that takes advantage of the decrement operators offered by Microsoft will fail at compile time in the EWL implementation.
Forward iterators were chosen over bidirectional iterators to save on memory consumption. Bidirectional iterators would add an additional word of memory to each entry in the hash container. Furthermore a hash container is an unordered collection of elements. This "unorder" can even change as elements are added to the hash container. The ability to iterate an unordered collection in reverse order has a diminished value.
Iterators are invalidated when the number of buckets in the hash container change. This means that iteration over a container while adding elements must be done with extra care (see Capacity for more details). Despite that iterators are invalidated in this fashion, pointers and references into the hash container are never invalidated except when the referenced element is removed from the container.