Therefore you should avoid confusing uses of overloading. Exactly what constitutes a confusing use of overloading is open to some debate.
Let's try to word this recommendation in positive terms - when should you use overloading?
Use overloading to make it convenient for the caller - give them several entry points - to what will essentially be a single operation. That is, regardless of which they call, the behavior should be the same/correct; overloading should simply make it easier to accept multiple types and/or relieve the caller from having to provide certain parameters (either so they can rely on default values, or because the parameters aren't applicable for some other inputs).
An obvious indicator of "essentially a single operation" is when an overload ends up calling one of its other overloads.