12 Oct
2003
12 Oct
'03
2:40 a.m.
When Lambda's bind() is used to create a functor for dereferencing a stored data member pointer given an instance pointer, it seems it is not possible to pass the resulting functor a temporary instance pointer. For example: #include <boost/lambda/bind.hpp> #include <boost/lambda/lambda.hpp> struct S { int i; }; S * f (); void g (S * p) { using namespace boost::lambda; bind(&S::i, _1)(p); // ok bind(&S::i, _1)(p + 0); // not ok, "no match for call ..." bind(&S::i, _1)(f()); // not ok, "no match for call ..." } Does this restriction have a purpose? If not, is this something that needs to be (and can be) fixed? Regards, Eelis van der Weegen