I agree, though I hadn't thought about it, that Rusty's issues are realy more of an author's, rather than developer's problem. Well said.
I do take issue, however, with the operator overloading. It's sugar, and it can seem sweet, but it's not good for you. In a large application that uses different libraries, if those different libraries have different operator overloads, keeping track of them can be difficult, and your code can have very well hidden errors (such as could result from using the operators in the wrong order). Now, you may say, "I would do better." but it's really not a good thing for the language. It would not enhance the stability and reliability of the general code-base. And it doesn't add any functionality that doesn't already exist with methods. *And*, if you do implement the funtionality with methods (.add(TypeA, TypeB)), there is a much lesser chance that a programmer could goof and inadvertantly use the wrong method. Operator overloading is just a different method syntax, but it puts the burden of figuring out which method on the compiler rather than the developer, and that's just bound to cause problems.