boost::converted_range
// In header: <boost/iterator/convert_iterator.hpp> template<typename Range, typename Converter> struct converted_range { // types typedef boost::convert_iterator< typename boost::range_iterator< Range >::type, Converter > Iterator; // construct/copy/destruct converted_range(Iterator, Iterator); };