*This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
Core Issues List revision 112c.
See http://www.open-std.org/jtc1/sc22/wg21/ for the official
list.*

2023-11-10

#### 2626.
Rephrase ones' complement using base-2 representation

**Section: **7.6.2.2 [expr.unary.op]
**Status: **C++23
**Submitter: **Jim X
**Date: **2022-09-10

[Accepted as a DR at the November, 2022 meeting.]

Subclause 7.6.2.2 [expr.unary.op] paragraph 10 specifies:

The operand of ~ shall have integral or unscoped enumeration type; the
result is the ones' complement of its operand. Integral promotions are
performed. The type of the result is the type of the promoted operand.
There is an ambiguity in the grammar...

This should be phrased in terms of the base-2 representation
similar to bitwise-AND, instead of alluding to some bit representation
by using the term "ones' complement".

**Proposed resolution (approved by CWG 2022-10-07):**

Subclause 7.6.2.2 [expr.unary.op] paragraph 10 specifies:

The operand of ~ shall have integral or unscoped enumeration
type~~; the result is the ones' complement of its
operand~~. Integral promotions are performed. The type of the
result is the type of the promoted operand.
Given the coefficients `x`_{i} of the base-2
representation (6.8.2 [basic.fundamental]) of the promoted
operand `x`, the coefficient `r`_{i} of the
base-2 representation of the result `r` is 1
if `x`_{i} is 0, and 0 otherwise.
There is an ambiguity in the grammar...