Я хотел бы написать оболочку для итератора STL.
Это должно только изменить поведение некоторых методов ...
Я вижу что-то вроде этого:
template<***>
class custom_iterator : public ***
{
T & iter;
public:
custom_iterator(T & iter) : iter(iter) {}
// for example, behaviour that increments value
T_val operator * () { return (*iter)+1; }
};
Как это можно сделать для всех типов итераторов? Я имею в виду:
- Итератор ввода
- Итератор вывода
- Прямой итератор
- Двунаправленный итератор
- Итератор произвольного доступа
Как это возможно?