Isn't operator overloading something else than the ability to define custom operators?
C# is not a language that is generally criticized for operator soup like the ones that support custom operators.
* C++ uses bitshift operators for IO. The (in?)famous
std::cout << "hello world" << std::endl;
Which is such an improvement over puts("hello world");
* Ruby on Rails components sometimes redefines `=` as a hash merge. E.g. this config.action_mailer.default_options = {from: 'no-reply@example.com'}
actually adds `from` to the default options instead of overriding it completely.