The Iterator Hierarchy Enforced by discipline in design NOT inheritance STL enforces with typedefs in a "traits" class