template<class Iterator>
class util::Circulator< Iterator >
This class converts a conventional iterator range to a circulator. This can be quite useful for structures like lists of edges around a vertex or something similar, where the arbitrary begin iterator of the list is not where you might want to start iterating. This is based on work by Dietmar Kuhl, but adapted to use the boost iterator_facade functionality. Because it's templatized on iterator type, a circulator could easily take a const_iterator as well, or a vanilla pointer or whatever. As long as there is a range, it should work. TODO: This circulator is for bidirectional iterators only right now. There's no reason it couldn't be adapted for forward or random access iterators based on the iterator's category.