A prefix unary operator shall be implemented by a
non-static member function ([class.mfct]) with no parameters or a
non-member function with one parameter.
Thus, for any prefix unary operator
@,
@x
can be interpreted as either
x.operator@()
or
operator@(x).
If both forms of the operator function have been declared,
the rules in [over.match.oper] determine which, if any, interpretation is
used.
See [over.inc] for an explanation of the postfix unary operators
++
and
--.