
Paul Mensonides wrote:
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Eric Niebler
I have a preprocessing task that exceeds my limited abilities. If any PP gurus want to step in and prevent me from hurting myself further, I would be very grateful.
My problem is this: I want to mpl::and_ together a bunch of predicates. mpl::and_ has a limit of 4 arguments. So this is wrong:
mpl::and_< pred1, pred2, pred3, pred4, pred5 >
but this is ok:
mpl::and_< pred1, pred2, pred3, mpl::and_< pred4, pred5 > >
The challenge, should you choose to accept it, is to write some PP magic that, given a MAKE_PREDICATE(z, n, data) macro and a max arity (which is greater than 4!), generates a properly nested mpl::and_-ing of the predicates.
Do you have a sequence (i.e. a selection) of predicates already or are they all "pred1", "pred2", etc.?
The predicates can be generated given an integer. They're not quite as simple as "pred1" and "pred2" but you can ignore that for the sake of discussion. In case it helps, the predicates will all be of the form: matches< typename meta::arg_c<basic_expr<Tag, Args1, M>, N>::type , typename meta::arg_c<basic_expr<Tag, Args2, M>, N>::type
where M is a constant (could be passed into the macro as data), and N is the monotonically increasing index. -- Eric Niebler Boost Consulting www.boost-consulting.com