I like how Haskell handles operator overloading: You need to conform to some kind of type class, _and_ you can make up your own operators instead of having to reuse bit-shifts for I/O.
Oh, I do not really have an opinion on operator overloading in C++. I just conceded the possibility that "removing operator overloading [...] could turn out to make the language more powerful [...]", because I have heard the opinion being advanced with some good arguments.