Следующий код может быть легко исправлен, но довольно раздражает.
#include <functional>
#include <boost/bind.hpp>
void foo() {
using namespace std::placeholders;
std::bind(_1, _2, _3); // ambiguous
}
Есть макрос BOOST_BIND_NO_PLACEHOLDERS
, но использование этого макроса также принесет некоторые недостатки, такие как boost::placeholders
исчезновение из модуля компиляции, включенного <boost/bind.hpp>
, но не включенного <boost/bind/placeholders.hpp>
.
Конфликты имен происходят и с другими библиотеками, такими как boost::mpl
, я не думаю, что сопровождающие не знают о проблеме, но я хочу знать, почему они настаивают на том, чтобы не унижать и не удалять using namespace boost::placeholders
в <boost/bind.hpp>
.