<t>OK - now I know what you are getting at (didn't read the code sample particularly). As long as your typedef structures have expected properties, iterator does not have to be a class - for example, boost::array::iterator is not a class, but a typedef. don't forget to implement const_iterator, reve...