C++11 C++;11名称空间查找已从C+更改+;98?
我在使用boost之前编写了一些代码。我在一个“核心”名称空间中创建了自己的绑定函数(类似于bind1st)。它过去工作得很好 但是当将-std=c++11添加到gcc中时,许多使用bind的方法都被解析为std::bind而不是core::bind,从而导致编译错误。 我可以通过将“bind”的所有用法更改为显式的“core::bind”来实现 对于名称空间核心中的所有代码、核心下的嵌套名称空间以及我使用“使用名称空间核心”的地方,都会发生这种情况。甚至在我的bind实现中对bind的“递归”调用也有这个问题 我在预处理器输出中查找了“using namespace std”,在boost的swap方法中只能找到一个实例,但它仍然从std::而不是core::中找到bindC++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的“递归”
此外,gcc-5.3.1比gcc-4.8.4失败得多。您真的应该包含一个,但是我将使用我的心理调试技能,预测您的问题涉及(一些)参数在
std
命名空间中的情况(想想std::string
,std::vector
,等等)
表示如果参数位于
std
命名空间中,则在std
命名空间中查找函数(bind
)。在C++03中没有找到它,因此编译器开始查找核心。在C++11中,它可以在std中找到,因此编译器会使用它。请出示一张请柬好吗?你的心理调试技能需要一张请柬。但你当然知道。