|
30 | 30 | is the expression's result and all operands modified by the expression.
|
31 | 31 |
|
32 | 32 | \pnum
|
33 |
| -Not all input values must be valid for a given expression; e.g., for integers |
| 33 | +Not all input values need be valid for a given expression; e.g., for integers |
34 | 34 | \tcode{a} and \tcode{b}, the expression \tcode{a / b} is not well-defined when
|
35 | 35 | \tcode{b} is \tcode{0}. This does not preclude the expression \tcode{a / b}
|
36 | 36 | being equality-preserving. The \term{domain} of an expression is the set of
|
|
39 | 39 | \pnum
|
40 | 40 | Expressions required by this document to be equality-preserving are further
|
41 | 41 | required to be stable: two evaluations of such an expression with the same input
|
42 |
| -objects must have equal outputs absent any explicit intervening modification of |
43 |
| -those input objects. |
| 42 | +objects are required to have equal outputs absent any explicit intervening |
| 43 | +modification of those input objects. |
44 | 44 | \begin{note}
|
45 | 45 | This requirement allows generic code to reason about the current values of
|
46 | 46 | objects based on knowledge of the prior values as observed via
|
|
64 | 64 | This document uses a notational convention to specify which expressions declared
|
65 | 65 | in a \grammarterm{requires-expression} modify which inputs: except where
|
66 | 66 | otherwise specified, an expression operand that is a non-constant lvalue or
|
67 |
| -rvalue may be modified. Operands that are constant lvalues or rvalues must not |
68 |
| -be modified. |
| 67 | +rvalue may be modified. Operands that are constant lvalues or rvalues are |
| 68 | +required to not be modified. |
69 | 69 |
|
70 | 70 | \pnum
|
71 | 71 | Where a \grammarterm{requires-expression} declares an expression that is
|
72 | 72 | non-modifying for some constant lvalue operand, additional variations of that
|
73 | 73 | expression that accept a non-constant lvalue or (possibly constant) rvalue for
|
74 | 74 | the given operand are also required except where such an expression variation is
|
75 | 75 | explicitly required with differing semantics. These
|
76 |
| -\term{implicit expression variations} must meet the semantic requirements of the |
77 |
| -declared expression. The extent to which an implementation validates the syntax |
78 |
| -of the variations is unspecified. |
| 76 | +\term{implicit expression variations} are required to meet the semantic |
| 77 | +requirements of the declared expression. The extent to which an implementation |
| 78 | +validates the syntax of the variations is unspecified. |
79 | 79 |
|
80 | 80 | \begin{example}
|
81 | 81 | \begin{codeblock}
|
|
333 | 333 | \pnum
|
334 | 334 | The \libconcept{ConvertibleTo} concept requires an expression of a particular
|
335 | 335 | type and value category to be both implicitly and explicitly convertible to some
|
336 |
| -other type. The implicit and explicit conversions must produce equal results. |
| 336 | +other type. The implicit and explicit conversions are required to produce equal |
| 337 | +results. |
337 | 338 |
|
338 | 339 | \indexlibrary{\idxcode{ConvertibleTo}}%
|
339 | 340 | \begin{itemdecl}
|
|
0 commit comments