|
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