Boost logo

Boost :

Subject: Re: [boost] [bind]bind question
From: Max (more4less_at_[hidden])
Date: 2012-05-27 08:12:52


> > I have the following code:
> >
> > bool do_something_conditional(int *handle, const
> > boost::function<bool(int)> &pred); bool pred_a(int handle); bool
> > pred_b(int handle, int n1, int n2);
> >
> > bool do_something(int *handle, int n1, int n2) {
> > return do_something_conditional(handle,
> > boost::bind(std::logical_and<bool>(),
> > boost::not1(&pred_a),
> > boost::bind(&pred_b, _1, n1, n2))); }
> >
> > But it does not compile.
>
> This should work and is probably clearer:
>
> return do_something_conditional(handle,
> boost::bind(std::logical_and<bool>(),
> !boost::bind(&pred_a, _1),
> boost::bind(&pred_b, _1, n1, n2)));

Yes, it works.

Thank you, Ben.

But why is my way wrong? With either boost::not1(&pred_a) or
!boost::bind(&is_master_device, _1) we get a functor that takes 1 parameter
of type int.

Max


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk