|
261 | 261 | The number and order of deducible template parameters for algorithm declarations
|
262 | 262 | are unspecified, except where explicitly stated otherwise.
|
263 | 263 | \begin{note}
|
264 |
| -Consequently, the algorithms may not |
| 264 | +Consequently, the algorithms cannot |
265 | 265 | be called with explicitly-specified template argument lists.
|
266 | 266 | \end{note}
|
267 | 267 |
|
|
388 | 388 | where \tcode{is_trivially_copy_constructible_v<T>}
|
389 | 389 | and \tcode{is_trivially_destructible_v<T>} are \tcode{true}.
|
390 | 390 | \begin{note}
|
391 |
| -This implies that user-supplied function objects should not rely on |
| 391 | +This implies that user-supplied function objects cannot rely on |
392 | 392 | object identity of arguments for such input sequences.
|
393 | 393 | Users for whom the object identity of the arguments to these function objects
|
394 | 394 | is important should consider using a wrapping iterator
|
|
413 | 413 | unsequenced with respect to one another in the calling thread of execution.
|
414 | 414 | \begin{note}
|
415 | 415 | This means that multiple function object invocations
|
416 |
| -may be interleaved on a single thread of execution, |
| 416 | +can be interleaved on a single thread of execution, |
417 | 417 | which overrides the usual guarantee from \ref{intro.execution}
|
418 | 418 | that function executions do not overlap with one another.
|
419 | 419 | \end{note}
|
|
499 | 499 | or threads of execution implicitly created by the library;
|
500 | 500 | the latter will provide weakly parallel forward progress guarantees.
|
501 | 501 | \begin{note}
|
502 |
| -This means that multiple function object invocations may be interleaved |
| 502 | +This means that multiple function object invocations can be interleaved |
503 | 503 | on a single thread of execution,
|
504 | 504 | which overrides the usual guarantee from \ref{intro.execution}
|
505 | 505 | that function executions do not overlap with one another.
|
|
3152 | 3152 | starting from \tcode{first} and proceeding to \tcode{last - 1}.
|
3153 | 3153 | \begin{note}
|
3154 | 3154 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3155 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3155 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3156 | 3156 | \end{note}
|
3157 | 3157 |
|
3158 | 3158 | \pnum
|
|
3187 | 3187 | every iterator in the range \range{first}{last}.
|
3188 | 3188 | \begin{note}
|
3189 | 3189 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3190 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3190 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3191 | 3191 | \end{note}
|
3192 | 3192 |
|
3193 | 3193 | \pnum
|
|
3228 | 3228 | starting from \tcode{first} and proceeding to \tcode{last - 1}.
|
3229 | 3229 | \begin{note}
|
3230 | 3230 | If the result of \tcode{invoke(proj, *i)} is a mutable reference,
|
3231 |
| -\tcode{f} may apply non-constant functions. |
| 3231 | +\tcode{f} can apply non-constant functions. |
3232 | 3232 | \end{note}
|
3233 | 3233 |
|
3234 | 3234 | \pnum
|
|
3280 | 3280 | every iterator in the range \range{first}{first + n} in order.
|
3281 | 3281 | \begin{note}
|
3282 | 3282 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3283 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3283 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3284 | 3284 | \end{note}
|
3285 | 3285 |
|
3286 | 3286 | \pnum
|
|
3319 | 3319 | every iterator in the range \range{first}{first + n}.
|
3320 | 3320 | \begin{note}
|
3321 | 3321 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3322 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3322 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3323 | 3323 | \end{note}
|
3324 | 3324 |
|
3325 | 3325 | \pnum
|
|
3354 | 3354 | \range{first}{first + n} in order.
|
3355 | 3355 | \begin{note}
|
3356 | 3356 | If the result of \tcode{invoke(proj, *i)} is a mutable reference,
|
3357 |
| -\tcode{f} may apply non-constant functions. |
| 3357 | +\tcode{f} can apply non-constant functions. |
3358 | 3358 | \end{note}
|
3359 | 3359 |
|
3360 | 3360 | \pnum
|
|
4398 | 4398 | do not overlap.
|
4399 | 4399 | \begin{note}
|
4400 | 4400 | For the overload with an \tcode{ExecutionPolicy},
|
4401 |
| -there may be a performance cost |
| 4401 | +there might be a performance cost |
4402 | 4402 | if \tcode{iterator_traits<ForwardIterator1>::value_type}
|
4403 | 4403 | is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
|
4404 | 4404 | \end{note}
|
|
5296 | 5296 | do not overlap.
|
5297 | 5297 | \begin{note}
|
5298 | 5298 | For the overloads with an \tcode{ExecutionPolicy},
|
5299 |
| -there may be a performance cost |
| 5299 | +there might be a performance cost |
5300 | 5300 | if \tcode{iterator_traits<ForwardIterator1>::value_type} does not meet
|
5301 | 5301 | the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
|
5302 | 5302 | \end{note}
|
|
5483 | 5483 | \oldconcept{CopyAssignable} requirements.
|
5484 | 5484 | \begin{note}
|
5485 | 5485 | For the overloads with an \tcode{ExecutionPolicy},
|
5486 |
| - there may be a performance cost |
| 5486 | + there might be a performance cost |
5487 | 5487 | if the value type of \tcode{ForwardIterator1} does not meet both the
|
5488 | 5488 | \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements.
|
5489 | 5489 | \end{note}
|
|
7019 | 7019 |
|
7020 | 7020 | \begin{note}
|
7021 | 7021 | For the overload with an \tcode{ExecutionPolicy},
|
7022 |
| -there may be a performance cost if \tcode{first}'s value type |
| 7022 | +there might be a performance cost if \tcode{first}'s value type |
7023 | 7023 | does not meet the \oldconcept{CopyConstructible} requirements.
|
7024 | 7024 | \end{note}
|
7025 | 7025 |
|
|
9537 | 9537 | that \tcode{exclusive_scan} excludes the $i^\text{th}$ input element
|
9538 | 9538 | from the $i^\text{th}$ sum.
|
9539 | 9539 | If \tcode{binary_op} is not mathematically associative,
|
9540 |
| -the behavior of \tcode{exclusive_scan} may be nondeterministic. |
| 9540 | +the behavior of \tcode{exclusive_scan} is nondeterministic. |
9541 | 9541 | \end{note}
|
9542 | 9542 | \end{itemdescr}
|
9543 | 9543 |
|
|
9664 | 9664 | that \tcode{inclusive_scan} includes the $i^\text{th}$ input element
|
9665 | 9665 | in the $i^\text{th}$ sum.
|
9666 | 9666 | If \tcode{binary_op} is not mathematically associative,
|
9667 |
| -the behavior of \tcode{inclusive_scan} may be nondeterministic. |
| 9667 | +the behavior of \tcode{inclusive_scan} is nondeterministic. |
9668 | 9668 | \end{note}
|
9669 | 9669 | \end{itemdescr}
|
9670 | 9670 |
|
|
9739 | 9739 | \tcode{transform_inclusive_scan} is that \tcode{transform_exclusive_scan}
|
9740 | 9740 | excludes the $i^\text{th}$ input element from the $i^\text{th}$ sum.
|
9741 | 9741 | If \tcode{binary_op} is not mathematically associative,
|
9742 |
| -the behavior of \tcode{transform_exclusive_scan} may be nondeterministic. |
| 9742 | +the behavior of \tcode{transform_exclusive_scan} is nondeterministic. |
9743 | 9743 | \tcode{transform_exclusive_scan}
|
9744 | 9744 | does not apply \tcode{unary_op} to \tcode{init}.
|
9745 | 9745 | \end{note}
|
|
9843 | 9843 | \tcode{transform_inclusive_scan} is that \tcode{transform_inclusive_scan}
|
9844 | 9844 | includes the $i^\text{th}$ input element in the $i^\text{th}$ sum.
|
9845 | 9845 | If \tcode{binary_op} is not mathematically associative,
|
9846 |
| -the behavior of \tcode{transform_inclusive_scan} may be nondeterministic. |
| 9846 | +the behavior of \tcode{transform_inclusive_scan} is nondeterministic. |
9847 | 9847 | \tcode{transform_inclusive_scan} does not
|
9848 | 9848 | apply \tcode{unary_op} to \tcode{init}.
|
9849 | 9849 | \end{note}
|
|
0 commit comments