If I have have some overloaded ostream operators, defined for library local objects, is its okay for them to go to std namespace? If I do not declare them in std namespace, then
It is generally a bad practice to declare anything (types, operators, etc ...) to be a part of a namespace you do not own. This can have unexpected consequences for people consuming your library. A better solution is to define your own namespace and to import both std
and your namespace when you need to combine solutions.