Yes. Most other uses for operator overloading are really chains of functions. There's better syntax for that.
I once wrote some overloads for C++ so that you could write
result = fileobject | item | item | item | item;
and then apply either "read" or "write" to "result". This allowed marshalling without writing the item list more than once. Bad idea.Python is notorious for problems that stem from combining operator overloading and implicit conversions. "+" is arithmetic for some types and concatenation for others.
[1,2,3] + [4,5,6]
is[1,2,3,4,5,6]
which you might not expect. If you add arrays from numpy, those add arithmetically. You can add a numpy array to a built-in array. Trouble comes when you pass a numpy array to a function that expects a built-in array, and the wrong semantics of "+" are applied.
Rust has operator overloading without implicit conversions. That avoids such ambiguities, at the cost of requiring many explicit conversions.