вот этот код приводит
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?

