Hello,
I'm rather stucked
in using lambda expressions for a presumably simple task. Suppose I have objects
with a member function
bool is_empty()
const;
stored in a vector:
I want to count the number of objects for which their member functions returns
false, which is simple, but not elegant to achieve by
size_t sum = 0;
for( Foo::const_iterator it = vec.begin(); it != vec.end(); ++it )
if ( it->is_empty() == false )
sum++;
I
want to exchange this for a lambda expression, and came up with the following
after some thinking.
for_each( begin(), end(), if_then( !(_1 ->* &GridCell::is_empty)(), var(sum)++ )
);
This is still wrong
and leads to two error messages:
error C2784: 'const
boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::logical_action<Action>,boost::tuples::tuple<boost::lambda::lambda_functor<T>>>>
boost::lambda::operator !(const boost::lambda::lambda_functor<T> &)' :
could not deduce template argument for 'const
boost::lambda::lambda_functor<T> &' from
'boost::tuples::null_type'
error C2675: unary '!' :
'boost::tuples::null_type' does not define this operator or a conversion to a
type acceptable to the predefined operator
Could anyone tell
how to get this working?
Regards
Hendrik
--
Hendrik Belitz
ISD Software und Systeme GmbH
Hauert 4
D - 44227
Dortmund
Germany
Fon: +49 (0)231/97 93-0
Fax: +49 (0)231/97 93-101
Mail: hBelitz@isdcad.de
Internet: www.isdcad.de
Geschäftsführung: Günter Flassig (Vors.), Dr. Jörg
Ruhwedel
Sitz Dortmund,
Amtsgericht Dortmund HRB 4601