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,,,