Boost logo

Boost Users :

From: Jean-Pierre Bergamin (james_at_[hidden])
Date: 2008-03-06 02:58:03


Hello

> I couldn't figure out how to use a logical negation in the
> following situation.
>
> struct IsConditionValid : public unary_function<Event, bool> {
> public:
> bool operator() (const Event& event)const {} };
>
> remove_copy_if(events.begin(), events.end(),
> back_inserter(result),
> IsConditionValid()); <-- how to
> negate the condition object?
>
> What I really need is '! IsConditionValid()'.
>
> How can it be done using may be boost::bind ?

If you already have a unary predicate (as your IsConditionValid functor),
you can also use the std::not1 function to negate the predicate:

remove_copy_if(
        events.begin(), events.end(),
        back_inserter(result),
        not1(IsConditionValid())
);

Bind overloads the ! operator for your convenience

#include <boost/bind.hpp>
...

remove_copy_if(
        events.begin(), events.end(),
        back_inserter(result),
        !boost::bind(IsConditionValid(), _1)
);

Regards

Jean-Pierre Bergamin


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net