Modify

Opened 7 years ago

Closed 7 years ago

#4621 closed Patches (fixed)

Feature Request: add some version of "type erasure" range/iterator

Reported by: Ilya Murav'jov <muravev@…> Owned by: Neil Groves
Milestone: To Be Determined Component: range
Version: Boost 1.44.0 Severity: Not Applicable
Keywords: Cc: muravev@…

Description

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 any_range.h . The common use case is as follows (my real code, select.cpp):

  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;
  }

Attachments (1)

any_range.h (1.6 KB) - added by Ilya Murav'jov <muravev@…> 7 years ago.

Download all attachments as: .zip

Change History (2)

Changed 7 years ago by Ilya Murav'jov <muravev@…>

Attachment: any_range.h added

comment:1 Changed 7 years ago by Neil Groves

Resolution: fixed
Status: newclosed

Implementation added to the trunk.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Neil Groves.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.