If you have a procedure with ten parameters, you probably missed some.
Alan Perlis
Functions, including overloaded operators, are the fundamental units of work. As we will see later on in the section on Error Handling and Exceptions (and particularly in Item 70), this has a direct effect on how we reason about the correctness and safety of our code.
But first, let's consider some fundamental mechanics for writing functions, including operators. In particular, we'll focus on their parameters, their semantics, and their overloading.
Our vote for the most valuable Item in this section goes to Item 26: Preserve natural semantics for overloaded operators.