
Is it possible the commented below condition. With regular ranges i make as many 'base()' calls as may adaptors i had applied. Obviously it's impossible with any_range. So what should i do ? #include <map> #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0 #include <boost/range/adaptors.hpp> #include <boost/range/algorithm.hpp> #include <boost/range/numeric.hpp> #include <boost/bind.hpp> #include <boost/range/any_range.hpp> struct foo{ int x, y; }; inline bool is_valid(int x){ return x > 0;} int main() { using namespace boost::adaptors; using boost::bind; typedef std::map<char, foo> map_t; typedef const int type; typedef boost::any_range< type, boost::forward_traversal_tag, typename boost::add_reference<type>::type, std::ptrdiff_t > forward_range_t; map_t m; forward_range_t rng = m | map_values | transformed(bind(&foo::x, _1)); // note: don't compile without BOOST_RANGE_ENABLE_CONCEPT_ASSERT defined as 0 forward_range_t::const_iterator found = boost::find_if(rng, is_valid); // found == boost::end(m); how to do it right ? }