почему компилятор не видит member type базового класса?
вот этот код приводит
template<class Cont, class Iter=typename Cont::iterator>
class my_iterator: public std::iterator_traits<Iter> {
Iter it;
// ...
public:
reference operator*() const {return *it;} // error
// ...
};
error: ‘reference’ does not name a type
вот так ошибка пропадает
typename std::iterator_traits<Iter>::reference operator*() const {return *it;}
Почему возникает ошибка? и как правильно унаследоваться от iterator_traits?