
Hello On Thursday 29 March 2007 17:42, Nat Goodspeed wrote:
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Dizzy Sent: Thursday, March 29, 2007 5:05 AM To: boost-users@lists.boost.org Subject: [Boost-users] [lambda] logical operators related errors
#include
#include #include int main() { using boost::bind; using boost::mem_fn;
A a1("str1", "str2", "str3"); A a2("str2", "str1", "str3");
eval(((bind(&A::s1, _1) < bind(&A::s1, _2)) && (bind(&A::s2, _1) < bind(&A::s2, _2)))(a1, a2)); }
This errors compiling about operator&& no match found.
[Nat] I think the problem may be that you're mixing boost::bind with plain operators. Try using boost::lambda::bind instead and see if you get farther.
Ok, using lambda::bind and lambda::_1, lambda::_2 it seems to work. However, I thought that boost::bind since 1.33 version returns a functor that can be used for lambda composition and it's overloaded operators (please excuse me if I just said something stupid, I'm a beginner with all this lambda/bind terms), hence would have explained to me why operator< did work with boost::bind without requiring boost::lambda::bind such as operator&& seems to require. Any idea why operator< works with the boost::bind functors and operator&& doesn't ? Or something else that I'm missing (such as there have been made special overloads for operator< to work with boost::bind functors). Thanks! -- Mihai RUSU Email: dizzy@roedu.net GPG : http://dizzy.roedu.net/dizzy-gpg.txt WWW: http://dizzy.roedu.net "Linux is obsolete" -- AST