12 Overloading [over]

12.6 Overloaded operators [over.oper]

12.6.1 Unary operators [over.unary]

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 --.
The unary and binary forms of the same operator are considered to have the same name.
Consequently, a unary operator can hide a binary operator from an enclosing scope, and vice versa.
— end note