
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::lamb da::logical_action<Action>,boost::tuples::tuple<boost::lambda::lambda_functo r<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: <mailto:hBelitz@isdcad.de> hBelitz@isdcad.de Internet: <http://www.isdcad.de/> www.isdcad.de Geschäftsführung: Günter Flassig (Vors.), Dr. Jörg Ruhwedel Sitz Dortmund, Amtsgericht Dortmund HRB 4601