$ 0 0 Overloaded operators should be in same namespace as one of the operands. Then ADL can find them and the declaration order doesn't matter.