tmp/tmpb_vm9owi/{from.md → to.md}
RENAMED
|
@@ -60,11 +60,11 @@ Requirements are stated in terms of well-defined expressions that define
|
|
| 60 |
valid terms of the types that satisfy the requirements. For every set of
|
| 61 |
well-defined expression requirements there is a table that specifies an
|
| 62 |
initial set of the valid expressions and their semantics. Any generic
|
| 63 |
algorithm (Clause [[algorithms]]) that uses the well-defined expression
|
| 64 |
requirements is described in terms of the valid expressions for its
|
| 65 |
-
|
| 66 |
|
| 67 |
Template argument requirements are sometimes referenced by name. See
|
| 68 |
[[type.descriptions]].
|
| 69 |
|
| 70 |
In some cases the semantic requirements are presented as C++code. Such
|
|
@@ -239,21 +239,22 @@ bitmask{}& operator^=(bitmask{}& X, bitmask{} Y) {
|
|
| 239 |
X = X ^ Y; return X;
|
| 240 |
}
|
| 241 |
```
|
| 242 |
|
| 243 |
Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
|
| 244 |
-
particular bitmask type. All such elements have distinct
|
| 245 |
-
that, for any pair *Ci* and *Cj*
|
| 246 |
-
is zero.
|
|
|
|
| 247 |
|
| 248 |
The following terms apply to objects and values of bitmask types:
|
| 249 |
|
| 250 |
- To *set* a value *Y* in an object *X* is to evaluate the expression
|
| 251 |
-
*X* |= *Y*.
|
| 252 |
- To *clear* a value *Y* in an object *X* is to evaluate the expression
|
| 253 |
-
*X* &= ~*Y*.
|
| 254 |
-
- The value *Y* *is set* in the object *X* if the expression *X* & *Y*
|
| 255 |
is nonzero.
|
| 256 |
|
| 257 |
##### Character sequences <a id="character.seq">[[character.seq]]</a>
|
| 258 |
|
| 259 |
The C standard library makes widespread use of characters and character
|
|
|
|
| 60 |
valid terms of the types that satisfy the requirements. For every set of
|
| 61 |
well-defined expression requirements there is a table that specifies an
|
| 62 |
initial set of the valid expressions and their semantics. Any generic
|
| 63 |
algorithm (Clause [[algorithms]]) that uses the well-defined expression
|
| 64 |
requirements is described in terms of the valid expressions for its
|
| 65 |
+
template type parameters.
|
| 66 |
|
| 67 |
Template argument requirements are sometimes referenced by name. See
|
| 68 |
[[type.descriptions]].
|
| 69 |
|
| 70 |
In some cases the semantic requirements are presented as C++code. Such
|
|
|
|
| 239 |
X = X ^ Y; return X;
|
| 240 |
}
|
| 241 |
```
|
| 242 |
|
| 243 |
Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
|
| 244 |
+
particular bitmask type. All such elements have distinct, nonzero values
|
| 245 |
+
such that, for any pair *Ci* and *Cj* where *i* != *j*, *Ci* & *Ci* is
|
| 246 |
+
nonzero and *Ci* & *Cj* is zero. Additionally, the value 0 is used to
|
| 247 |
+
represent an *empty bitmask*, in which no bitmask elements are set.
|
| 248 |
|
| 249 |
The following terms apply to objects and values of bitmask types:
|
| 250 |
|
| 251 |
- To *set* a value *Y* in an object *X* is to evaluate the expression
|
| 252 |
+
*X* `|=` *Y*.
|
| 253 |
- To *clear* a value *Y* in an object *X* is to evaluate the expression
|
| 254 |
+
*X* `&= ~`*Y*.
|
| 255 |
+
- The value *Y* *is set* in the object *X* if the expression *X* `&` *Y*
|
| 256 |
is nonzero.
|
| 257 |
|
| 258 |
##### Character sequences <a id="character.seq">[[character.seq]]</a>
|
| 259 |
|
| 260 |
The C standard library makes widespread use of characters and character
|