add range_traits.hpp