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@…



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 ), 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();

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