Problem nesting boost::lambda::bind-s?

Do you happen to #include boost/bind. Hpp in your lambda-using code? This would cause unqualified use of the placeholders (_1, _2, etc) to resolve to those defined by Boost.

Bind, and these don't mix well with Boost. Lambda Rewriting your code to explicitly use boost::lambda::_1,2,3 instead of the unqualified names compiles fine on my VC 7.1 setup.

Not sure what version of Boost or what compiler are you using. With boost 1.37 and VS2005 I can get the same error. I suspect it may be that an error at the heart of the template expansion is causing a SFINAE issue.

For instance taking the innermost expression out: boost::function func = boost::lambda::bind ( boost::lambda::constructor() , _1 , _2 ); That looks ok to me yet also fails, albeit with a : std::pair::pair' : none of the 3 overloads could convert all the argument types error. Of course you could just use: void func ( PhotoPrintThumbnail* ppt , const PhotoPrintFormat& ppf , const PhotoPrintQuantity& ppq ) { ppt->SetFormats (PhotoPrintThumbnail::LoadedFormats (1, PhotoPrintThumbnail::LoadedFormat (ppf, ppq))); } ExpressButtonPressed (func); which is clearer and compiles.

I think at the first bind, you should bind the constructed object (resulted from the second bind) as first parameter of the method (it should be the address of the constructed object): ExpressButtonPressed( boost::lambda::bind( &thumb::PhotoPrintThumbnail::SetFormats, boost::lambda::bind( boost::lambda::constructor(), 1, boost::lambda::bind( boost::lambda::constructor(), _2, _3 ) ), _1 ) ); I didn't try to compile the code. One other possible issue is that the second bind functor might return the constructed object by value, and the first bind requires a pointer to object (as this pointer), so you still need a pointer as first bound parameter for SetFormats.

Do you happen to #include boost/bind. Hpp in your lambda-using code? This would cause unqualified use of the placeholders (_1, _2, etc) to resolve to those defined by Boost.

Bind, and these don't mix well with Boost.Lambda. Rewriting your code to explicitly use boost::lambda::_1,2,3 instead of the unqualified names compiles fine on my VC 7.1 setup.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions