From Jason Turner

[bitmask.types]

Diff to HTML by rtfpessoa

tmp/tmprj3seqlv/{from.md → to.md} RENAMED
@@ -46,18 +46,19 @@ bitmask{}& operator^=(bitmask{}& X, bitmask{} Y) {
46
  X = X ^ Y; return X;
47
  }
48
  ```
49
 
50
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
51
- particular bitmask type. All such elements have distinct values such
52
- that, for any pair *Ci* and *Cj*, *Ci* & *Ci* is nonzero and *Ci* & *Cj*
53
- is zero.
 
54
 
55
  The following terms apply to objects and values of bitmask types:
56
 
57
  - To *set* a value *Y* in an object *X* is to evaluate the expression
58
- *X* |= *Y*.
59
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
60
- *X* &= ~*Y*.
61
- - The value *Y* *is set* in the object *X* if the expression *X* & *Y*
62
  is nonzero.
63
 
 
46
  X = X ^ Y; return X;
47
  }
48
  ```
49
 
50
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
51
+ particular bitmask type. All such elements have distinct, nonzero values
52
+ such that, for any pair *Ci* and *Cj* where *i* != *j*, *Ci* & *Ci* is
53
+ nonzero and *Ci* & *Cj* is zero. Additionally, the value 0 is used to
54
+ represent an *empty bitmask*, in which no bitmask elements are set.
55
 
56
  The following terms apply to objects and values of bitmask types:
57
 
58
  - To *set* a value *Y* in an object *X* is to evaluate the expression
59
+ *X* `|=` *Y*.
60
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
61
+ *X* `&= ~`*Y*.
62
+ - The value *Y* *is set* in the object *X* if the expression *X* `&` *Y*
63
  is nonzero.
64