From Jason Turner

[type.descriptions]

Diff to HTML by rtfpessoa

tmp/tmplgu0hbum/{from.md → to.md} RENAMED
@@ -80,21 +80,22 @@ bitmask{}& operator^=(bitmask{}& X, bitmask{} Y) {
80
  X = X ^ Y; return X;
81
  }
82
  ```
83
 
84
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
85
- particular bitmask type. All such elements have distinct values such
86
- that, for any pair *Ci* and *Cj*, *Ci* & *Ci* is nonzero and *Ci* & *Cj*
87
- is zero.
 
88
 
89
  The following terms apply to objects and values of bitmask types:
90
 
91
  - To *set* a value *Y* in an object *X* is to evaluate the expression
92
- *X* |= *Y*.
93
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
94
- *X* &= ~*Y*.
95
- - The value *Y* *is set* in the object *X* if the expression *X* & *Y*
96
  is nonzero.
97
 
98
  ##### Character sequences <a id="character.seq">[[character.seq]]</a>
99
 
100
  The C standard library makes widespread use of characters and character
 
80
  X = X ^ Y; return X;
81
  }
82
  ```
83
 
84
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
85
+ particular bitmask type. All such elements have distinct, nonzero values
86
+ such that, for any pair *Ci* and *Cj* where *i* != *j*, *Ci* & *Ci* is
87
+ nonzero and *Ci* & *Cj* is zero. Additionally, the value 0 is used to
88
+ represent an *empty bitmask*, in which no bitmask elements are set.
89
 
90
  The following terms apply to objects and values of bitmask types:
91
 
92
  - To *set* a value *Y* in an object *X* is to evaluate the expression
93
+ *X* `|=` *Y*.
94
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
95
+ *X* `&= ~`*Y*.
96
+ - The value *Y* *is set* in the object *X* if the expression *X* `&` *Y*
97
  is nonzero.
98
 
99
  ##### Character sequences <a id="character.seq">[[character.seq]]</a>
100
 
101
  The C standard library makes widespread use of characters and character