Namespaces and Operator Overloading in C++
Putting it into the library namespace works because of Koenig lookup.
You should define them in the library namespace. The compiler will find them anyway through argument dependant lookup.
No need to pollute the global namespace.