
Peter Dimov wrote:
Currently boost/ appears to contain 98 header files. Bringing this down to 97 wouldn't be much of an improvement.
I didn't propose to delete the old one.
You bring up the legitimate problem of bind's _1 clashing with lambda's _1 (when "using namespace boost::lambda" is in effect), but I totally don't see what this has to do with moving boost::bind to boost::bind::bind.
Symmetry: boost::lambda::bind, boost::bind::bind (or maybe boost::function::bind and also include boost.function library there)
To answer your specific question, ::_1 selects the Bind placeholder and boost::lambda::_1 selects Lambda's one; consequently, "using ::_1" is an using declaration for Bind's _1, and "using boost::lambda::_1" is the using declaration for its Lambda counterpart. I only tested them on VC 7.1, though; maybe your compiler doesn't accept them?
This might be a different discussion but I simply don't understand what are the rules for putting boost.bind and boost.function in the 'global' boost namespace and many other libraries not. Historical reasons? A matter of interface size? [...]
Probably not. You'll use "using namespace boost::placeholders" instead, when bind is modified to conform a bit more closely to TR1. The problem is that this breaks existing code. Of course when you have two using directives, one for Bind and one for Lambda, _1 will once again become ambiguous.
There will be other headers for the TR1 implementations, so breaking existing code is not so much my problem. Stefan