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