id summary reporter owner description type status milestone component version severity resolution keywords cc 6216 Add an unwrap adaptor to Range ne01026@… Neil Groves "Iterator adaptors can be easily unwrapped by calling `iterator .base ()`; range adaptors should provide a similar functionality. My implementation: {{{ #!cpp namespace boost { namespace adaptors { namespace detail { struct unwrap_forwarder {}; template < class P_R > inline ::boost:: iterator_range < typename ::boost:: range_iterator < P_R >:: type:: base_type > operator | (P_R const &p_r, detail:: unwrap_forwarder const &) { return ::boost:: make_iterator_range (::boost:: begin (p_r). base (), ::boost:: end (p_r). base ()); } /* !boost.adaptors.|unwrapped X */ } /* &boost.adaptors.detail X */ namespace { detail:: unwrap_forwarder const (&unwrapped) ((detail:: unwrap_forwarder ())); } } /* &boost.adaptors X */ } /* &boost X */ }}} My test: {{{ #!cpp int main () { ::boost:: iterator_range < ::std:: string:: const_iterator > ((::boost:: equal_range (::std:: string () | ::boost:: adaptors:: transformed (::std:: negate < int > ()), 0) | ::boost:: adaptors:: unwrapped)); } }}}" Feature Requests new To Be Determined range Boost 1.48.0 Problem