
In boost/bind.hpp there is injection of a boost namespace contents into the global namespace:
Including <boost/bind/bind.hpp> doesn't bring the placeholders into the global namespace; if you don't want them there, just include <boost/bind/bind.hpp>. <boost/bind.hpp> does for backward compatibility.
Unfortunately, some of the Boost libraries include <boost/bind.hpp>, and thus pollute the global namespace.
Please fix this in the next release of Boost.
Breaking code without any warning is not a good practice, but I'll mark <boost/bind.hpp> as deprecated to allow people time to migrate.
Personally speaking, I think the macro `BOOST_BIND_NO_PLACEHOLDERS` needs to become `BOOST_BIND_ENABLE_GLOBAL_PLACEHOLDERS`. People can still use <boost/bind.hpp>, but they'll need to explicitly opt into the old behaviour. (This will also encourage the maintainers of those libraries depending on global placeholders to fix their libraries) Niall