----- Original Message ----- From: "joel falcou" <joel.falcou@lri.fr> To: <boost-users@lists.boost.org> Sent: Friday, January 22, 2010 1:41 AM Subject: Re: [Boost-users] generate an n-deep runtime for loop
<snip> is this possible? Yes, you'll need to build a recursive function that takes your vector and an mpl::int_ as a n arguments, geenrate a for loop on current fusion element
Hicham Mouline wrote: then call itself while incrementing the mpl::int_. Terminal case stop the for loop generation and generate the inner body.
I am gonna try this: /// Seq is fusion::vector< optional< variant<> >, optional< variant<> >, ...., optional< variant<> > > /// InnerBody is a callable that takes as many arguments as there are elements in the Seq template <typename Seq, typename InnerBody, template MplIntegral> void for_recurse(const Seq& seq, const InnerBody& body) { // check requirements are compile time // generate the for loop // for each iteration, call for_recurse with seq reduced } //partial specialization for the 0 case template <typename Seq, typename InnerBody> void for_recurse< mpl::int_<0> >(const Seq& seq, const InnerBody& body) { body( ... ); // somehow call body with all the arguments accumulated so far , how? } regards,