[Boost-bugs] [Boost C++ Libraries] #4621: Feature Request: add some version of "type erasure" range/iterator

Subject: [Boost-bugs] [Boost C++ Libraries] #4621: Feature Request: add some version of "type erasure" range/iterator
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-09-02 11:59:54


#4621: Feature Request: add some version of "type erasure" range/iterator
------------------------------------------------+---------------------------
 Reporter: Ilya Murav'jov <muravev@…> | Owner: neilgroves
     Type: Patches | Status: new
Milestone: To Be Determined | Component: range
  Version: Boost 1.44.0 | Severity: Not Applicable
 Keywords: |
------------------------------------------------+---------------------------
 Hi!
  I successfully use B.Lambda/B.Function for closure functionality in my
 code and would like to do the same with complex iterators/ranges . I've
 successfully implemented such "any" iterator range on top of any_iterator
 ( thanks to
 http://thbecker.net/free_software_utilities/type_erasure_for_cpp_iterators/start_page.html
 ), see [[http://gitorious.org/bombono-dvd/bombono-
 dvd/blobs/master/src/mlib/range/any_range.h|any_range.h]] . The common use
 case is as follows (my real code, [[http://gitorious.org/bombono-dvd
 /bombono-dvd/blobs/master/src/mgui/editor/select.cpp|select.cpp]]):

 {{{#!c++
   fe::range<Comp::MediaObj*> SelectedMediaObjs(MenuRegion& mn_rgn, const
 int_array& sel_arr)
   {
       return fe::make_any( sel_arr |
 fe::transformed(ToMOTransform(mn_rgn)) );
   }
   fe::range<Comp::MediaObj*> SelectedMediaObjs(MEditorArea& edt_area)
   {
       return SelectedMediaObjs(edt_area.CurMenuRegion(),
 edt_area.SelArr());
   }

   ...
   // somewhere else
   ...
   BOOST_FOREACH( Comp::MediaObj* obj, SelectedMediaObjs(edt_area) )
   {
       res_mi = obj->MediaItem();
       break;
   }
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/4621>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:04 UTC