小编use*_*407的帖子

为什么 boost::bind 坚持将 `boost::placeholders` 拉入全局命名空间?

以下代码可以轻松修复,但很烦人。

#include <functional>
#include <boost/bind.hpp>
void foo() {
  using namespace std::placeholders;
  std::bind(_1, _2, _3); // ambiguous
}
Run Code Online (Sandbox Code Playgroud)

有一个宏BOOST_BIND_NO_PLACEHOLDERS,但是使用这个宏也会带来一些缺点,比如导致boost::placeholders从包含<boost/bind.hpp>但不包含的编译单元中消失<boost/bind/placeholders.hpp>

该名称冲突还带有其他库一样boost::mpl,我不认为维护者不知道这个问题,但我想知道他们为什么坚持不贬低和删除using namespace boost::placeholders<boost/bind.hpp>

c++ boost namespaces

11
推荐指数
2
解决办法
4893
查看次数

标签 统计

boost ×1

c++ ×1

namespaces ×1