Ожидается, что типичный прямой итератор реализует следующие методы:
value_type& operator*();
value_type* operator->();
Я пишу собственный итератор для пользовательского контейнера, где пользователь ожидает увидеть value_type
, отличное от представления значения внутри контейнера. Поэтому, возвращая пользователю значение value_type
, я преобразовываю его из внутреннего представления в ожидаемое пользователем value_type
. Это легко реализовать внутри упомянутых членов.
Не могли бы вы посоветовать, как обращаться с l-значениями? Где я могу обработать преобразование value_type
во внутреннее представление, когда пользователь присваивает значения итератору в синтаксисе, таком как *it = value_type(5)
?
Я думал вернуть функтор, но мне не нравится эта идея из-за необычного синтаксиса на стороне вызывающей стороны.