On Sat, Aug 23, 2003 at 09:45:42AM -0400, Brian McNamara wrote: > // use boost::lamdba > boost::lexicographic<person> > ( _1.first, cmp_lower ) /* see below */ > ( _1.last, cmp_lower ) > ( bind(&T::age,_1) /* use default cmp */ ) > ( p1, p2 ) ... > The problem (cited "see below") is that since operator "." isn't > overloadable, the boost::lambda expressions like "_1.first" don't > actually exist. Offhand I dunno if C++ in general or Boost in > particular offers a nice way to lambda-ify such a member-variable > expression.
I just looked at the boost::lambda documentation and see that they were clever enough to make bind() work on member variables as well as member functions. So the actual syntax would be // Assume "p1.first", "p1.last", and "p1.age()" are all legal boost::lexicographic<person> ( bind(&T::first,_1), cmp_lower ) ( bind(&T::last,_1), cmp_lower ) ( bind(&T::age,_1) /* use default cmp */ ) // above returns a comparator object; can add ( p1, p2 ) // to call it if desired -- -Brian McNamara ([EMAIL PROTECTED]) _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost