I have stumbled upon somehow stupid problem, yet I have not found any answear or even question about it. I am implementing custom transforming input iterator, and want to do something like that:
template<class T>
class my_it :
public std::iterator<std::input_iterator_tag, T, ??? should I put anything here ??? > {
...
my_proxy_with_implemented_arrow<T> operator->();
T operator*();
...
};
As the type name says - proxy has implemented operator->
to get pointer behaviour.
And so my question is, should I define pointer
template argument in inherited std::iterator
to my_proxy_with_implemented_arrow<T>
and reference
to T
or should I keep the default values and don't care about return values?
In other words - do the types given in inherited std::iterator
should be the same as the types returned by the iterator operators?