A binary operator must take two parameters, at least one of which must have
the class or struct type in which the
operator is declared. The shift operators (§14.8) are further constrained:
The type of the first parameter must be
the class or struct type in which the operator is declared, and the second
parameter must always have the type
int. A binary operator can return any type.
The signature of a binary operator consists of the operator token (+, -, *,
/, %, &, |, ^, <<, >>, ==, !=, >, <, >=, or
<=) and the types of the two formal parameters. The return type and the
names of the formal parameters are not
part of a binary operator?s signature.
Certain binary operators require pair-wise declaration. For every
declaration of either operator of a pair, there
must be a matching declaration of the other operator of the pair. Two
operator declarations match when they have
the same return type and the same type for each parameter. The following
operators require pair-wise declaration:
? operator == and operator !=
? operator > and operator <
? operator >= and operator <=