Boost logo

Boost Users :

Subject: Re: [Boost-users] logical operators in lambda
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-04-07 11:22:58


AMDG

Conoscenza Silente wrote:
> I am trying to use boost::lambda using logicat operator.
> I would like to use it in a STL std::find_if call.
>
> What I receive is always the same error
> error: no match for ‘operator==’ in ‘boost::lambda::<unnamed>::_1 == 13’
>
> Do you know what I am doing wrong?
> Thanks
> AFG
>
> using namespace boost::assign;
>
> int main( int argc, char** argv ){
>
> std::vector< int > v;
> v += 12,13,14,15;
>
> bool found_tmp = false;
> boost::lambda::var_type< bool >::type found(
> boost::lambda::var(found_tmp) );
>
> std::find_if(
> v.begin(),
> v.end(),
> (
> found = ( boost::lambda::_1 == 13 ),
> return found
> ) );
> }
>

Don't try to return found inside the lambda expression.

Try

bool found = std::find_if(v.begin(), v.end(), boost::lambda::_1 == 13)
!= v.end();

In Christ,
Steven Watanabe


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