Modify

Opened 7 years ago

Closed 6 years ago

#4621 closed Patches (fixed)

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

Reported by: Ilya Murav'jov <muravev@…> Owned by: neilgroves
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@…>

comment:1 Changed 6 years ago by neilgroves

  • Resolution set to fixed
  • Status changed from new to closed

Implementation added to the trunk.

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain neilgroves.
The resolution will be deleted. Next status will be 'reopened'.
Author


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

 
Note: See TracTickets for help on using tickets.