mercredi 24 août 2016

C++11 namespace lookup changed from C++98?

I have some code I made before using boost. I made my own bind function (similar to bind1st) in a "core" namespace. It used to work fine.

But when adding -std=c++11 to gcc, many uses bind are resolved to std::bind instead of core::bind, coursing compilation errors. I can make it work by changing all uses of "bind" to explicitly "core::bind".

This happens for all code within the namespace core, in nested namespaces under core and in places, where I used "using namespace core". Even "recursive" calls to bind inside my bind implementations have the problem.

I have looked for "using namespace std" in the pre-processor output and can only find one instance inside a swap method from boost, and still it finds bind from std:: instead of core::.

Furthermore, gcc-5.3.1 is failing a lot more than gcc-4.8.4.

Aucun commentaire:

Enregistrer un commentaire