Для некоего класса требуется создать stl-совместимые итераторы. Как правильнее будет сделать с точки зрения дизайна: отдельные классы для UserIterator и ReverseUserIterator, или сделать один класс итератора с тегом в конструкторе (например), на основании которого будет выбираться поведение?