For an operation of the form ~x, unary operator overload resolution (?4.2.3)
is applied to select a specific
operator implementation. The operand is converted to the parameter type of
the selected operator, and the
type of the result is the return type of the operator. The predefined
bitwise complement operators are:
int operator ~(int x);
uint operator ~(uint x);
long operator ~(long x);
ulong operator ~(ulong x);
For each of these operators, the result of the operation is the bitwise
complement of x.
Every enumeration type E implicitly provides the following bitwise
complement operator:
E operator ~(E x);
The result of evaluating ~x, where x is an expression of an enumeration
type E with an underlying type U, is
exactly the same as evaluating (E)(~(U)x).
is applied to select a specific
operator implementation. The operand is converted to the parameter type of
the selected operator, and the
type of the result is the return type of the operator. The predefined
bitwise complement operators are:
int operator ~(int x);
uint operator ~(uint x);
long operator ~(long x);
ulong operator ~(ulong x);
For each of these operators, the result of the operation is the bitwise
complement of x.
Every enumeration type E implicitly provides the following bitwise
complement operator:
E operator ~(E x);
The result of evaluating ~x, where x is an expression of an enumeration
type E with an underlying type U, is
exactly the same as evaluating (E)(~(U)x).