C++11 C++;11名称空间查找已从C+更改+;98?

C++11 C++;11名称空间查找已从C+更改+;98?,c++11,C++11,我在使用boost之前编写了一些代码。我在一个“核心”名称空间中创建了自己的绑定函数(类似于bind1st)。它过去工作得很好 但是当将-std=c++11添加到gcc中时,许多使用bind的方法都被解析为std::bind而不是core::bind,从而导致编译错误。 我可以通过将“bind”的所有用法更改为显式的“core::bind”来实现 对于名称空间核心中的所有代码、核心下的嵌套名称空间以及我使用“使用名称空间核心”的地方,都会发生这种情况。甚至在我的bind实现中对bind的“递归”

我在使用boost之前编写了一些代码。我在一个“核心”名称空间中创建了自己的绑定函数(类似于bind1st)。它过去工作得很好

但是当将-std=c++11添加到gcc中时,许多使用bind的方法都被解析为std::bind而不是core::bind,从而导致编译错误。 我可以通过将“bind”的所有用法更改为显式的“core::bind”来实现

对于名称空间核心中的所有代码、核心下的嵌套名称空间以及我使用“使用名称空间核心”的地方,都会发生这种情况。甚至在我的bind实现中对bind的“递归”调用也有这个问题

我在预处理器输出中查找了“using namespace std”,在boost的swap方法中只能找到一个实例,但它仍然从std::而不是core::中找到bind


此外,gcc-5.3.1比gcc-4.8.4失败得多。

您真的应该包含一个,但是我将使用我的心理调试技能,预测您的问题涉及(一些)参数在
std
命名空间中的情况(想想
std::string
std::vector
,等等)


表示如果参数位于
std
命名空间中,则在
std
命名空间中查找函数(
bind
)。在C++03中没有找到它,因此编译器开始查找
核心
。在C++11中,它可以在std中找到,因此编译器会使用它。

请出示一张请柬好吗?你的心理调试技能需要一张请柬。但你当然知道。