It is common practice to "save off" the templated type T as a typedef inside the class. All STL containers do it, although they use the symbol "value_type" as opposed to the mixed case. It is useful for metaprogramming.
Thanks for the reply, jsmith, but I don't quite get what you mean. Could you explain it a different way - my brain is kind of sluggish today (and probably most other days...)
iter_swap takes two iterators and swaps the values that are referenced by the iterators. ie, much like std::swap.
The swap algorithm is well-known: make a temporary copy of one value; copy the second to the first, copy the temporary to the second.
In order to be able to do this, however, one has to know the type that the iterator refers to (to instantiate the temporary).
Because all iterator classes in STL have a value_type typedef which stores the contained type, this is possible. Without this typedef, it is much, much harder to declare iter_swap.