
Larry Evans <cppljevans@cox-internet.com> writes:
After creating:
typedef range_c<int,0,3> types; typedef fold < types , empty_base , inherit< arg<2>, arg<1> > >::type tuple_type;
I'd like to use for_each on tuple_type. For example:
struct print_integral_c { template<int i, typename Right> void operator()(inherit<integral_c<int,i>, Right>)const { std::cout<<i<<"\n"; } };
for_each<tuple_type>(print_integral_c);
However, tuple_type is not a sequence; hence, for_each won't work. I could define the necessary specializations for mpl::begin, etc., to make it a sequence, but I was wondering if there's any way or any plans to somehow automagically make fold or reverse_fold into a sequence so I could use for_each on it.
No. Since fold and reverse_fold are metafunctions (and therefore class templates), they can't possibly be sequences (which are always types). fold and reverse_fold don't even have to _return_ sequences. I can't understand why you're not using Fusion, or at least trying to fit into the Fusion framework, but I'm going to stop flogging that horse now. -- Dave Abrahams Boost Consulting www.boost-consulting.com