|
Boost : |
Subject: Re: [boost] [mpl] is there a or_seq like logical metafunction?
From: Larry Evans (cppljevans_at_[hidden])
Date: 2009-02-10 13:39:52
On 02/07/09 13:29, vicente.botet wrote:
[snip]
> After suggestion of I don't remember who, I have implemented it as
>
> /* Calculate the mlp::and_ of a sequence of nullary logical metafunctions.*/
> template <typename Seq>
> struct and_seq : boost::is_same<typename mpl::find_if<Seq, mpl::not_<mpl::_> >::type,
> typename mpl::end<Seq>::type>
> {};
>
>
> /* Calculate the mlp::or_ of a sequence of nullary logical metafunctions. */
> template <typename Seq>
> struct or_seq : mpl::not_<boost::is_same<typename mpl::find_if<Seq, mpl::_>::type,
> typename mpl::end<Seq>::type>
> > {};
>
>
> If there are better ways to do that, you don't tink that this must be encapsulated in the library? Why not add these metafunctions in Boost.MPL?
An alternative to using find_if is to use the all_true (and an obvious
variation, any_true) from the while.cpp in the while.zip in
the boost vault's variadic_templates directory. all_true uses
the while_ template, which is briefly described here:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk