When authoring a library in a particular namespace, it's often convenient to provide overloaded operators for the classes in that namespace. It seems (at least with g++) that the overloaded operators can be implemented either in the library's namespace:
namespace Lib {
class A {
};
A operator+(const A&, const A&);
} // namespace Lib
or the global namespace
namespace Lib {
class A {
};
} // namespace Lib
Lib::A operator+(const Lib::A&, const Lib::A&);
From my testing, they both seem to work fine. Is there any practical difference between these two options? Is either approach better?
question from:
https://stackoverflow.com/questions/171862/namespaces-and-operator-overloading-in-c 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…