Operator overloading and namespaces [duplicate]
问题 This question already has answers here : Closed 9 years ago . Possible Duplicate: Where should non-member operator overloads be placed? While browsing on SO, I often find questions or answer that involves overloading/defining a std::ostream& operator<<(std::ostream& os, const Foo& foo) or a Foo operator+(const Foo& l, const Foo& r) . While I know how and when (not) to write these operators, I'm confused about the namespace thing. If I have the following class: namespace bar { class Foo {}; }