How to implement iterator_traits via inheritance from std::iterator

Viewed 30

guys. I know it might be a very stupid question, but i need to implement my own iterator_traits and i've decided to do this via inheritance from std::iterator. I've searched a lot of info but still can't figure out how to do this right. If it might matter, i'm making own STL_containers and the task requires traits too. Would be very grateful for help ^^

#ifndef ITERATOR_TRAITS_HPP
#define ITERATOR_TRAITS_HPP

#include <iostream>
#include <iomanip>
#include <exception>
#include <iterator>

namespace ft
{
    template <class Iterator = std::iterator<std::random_access_iterator_tag, Iterator, std::ptrdiff_t, Iterator*,Iterator>>
    struct iterator_traits
    {
        typedef Iterator::difference_type       difference_type;
        typedef Iterator::value_type            value_type;
        typedef Iterator::pointer               pointer;
        typedef Iterator::reference             reference;
        typedef Itertator::iterator_category    iterator_category;
    };

    template <class T>
    struct iterator_traits <T*>
    {
        typedef std::ptrdiff_t                  difference_type;
        typedef T                               value_type;
        typedef T*                              pointer;
        typedef T&                              reference;
        typedef std::random_access_iterator_tag iterator_category;
    };

    template <class T>
    struct iterator_traits <const T*>
    {
        typedef std::ptrdiff_t                  difference_type;
        typedef T                               value_type;
        typedef T*                              pointer;
        typedef T&                              reference;
        typedef std::random_access_iterator_tag iterator_category;
    };
} // namespace ft

#endif 
0 Answers
Related