add iterator_traits.hpp