|
262 | 262 | The number and order of deducible template parameters for algorithm declarations
|
263 | 263 | are unspecified, except where explicitly stated otherwise.
|
264 | 264 | \begin{note}
|
265 |
| -Consequently, the algorithms may not |
266 |
| -be called with explicitly-specified template argument lists. |
| 265 | +Consequently, an implementation can reject calls |
| 266 | +that specify an explicit template argument list. |
267 | 267 | \end{note}
|
268 | 268 |
|
269 | 269 | \rSec1[algorithms.parallel]{Parallel algorithms}
|
|
389 | 389 | where \tcode{is_trivially_copy_constructible_v<T>}
|
390 | 390 | and \tcode{is_trivially_destructible_v<T>} are \tcode{true}.
|
391 | 391 | \begin{note}
|
392 |
| -This implies that user-supplied function objects should not rely on |
| 392 | +This implies that user-supplied function objects cannot rely on |
393 | 393 | object identity of arguments for such input sequences.
|
394 | 394 | Users for whom the object identity of the arguments to these function objects
|
395 | 395 | is important should consider using a wrapping iterator
|
|
414 | 414 | unsequenced with respect to one another in the calling thread of execution.
|
415 | 415 | \begin{note}
|
416 | 416 | This means that multiple function object invocations
|
417 |
| -may be interleaved on a single thread of execution, |
| 417 | +can be interleaved on a single thread of execution, |
418 | 418 | which overrides the usual guarantee from \ref{intro.execution}
|
419 | 419 | that function executions do not overlap with one another.
|
420 | 420 | \end{note}
|
|
500 | 500 | or threads of execution implicitly created by the library;
|
501 | 501 | the latter will provide weakly parallel forward progress guarantees.
|
502 | 502 | \begin{note}
|
503 |
| -This means that multiple function object invocations may be interleaved |
| 503 | +This means that multiple function object invocations can be interleaved |
504 | 504 | on a single thread of execution,
|
505 | 505 | which overrides the usual guarantee from \ref{intro.execution}
|
506 | 506 | that function executions do not overlap with one another.
|
|
3153 | 3153 | starting from \tcode{first} and proceeding to \tcode{last - 1}.
|
3154 | 3154 | \begin{note}
|
3155 | 3155 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3156 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3156 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3157 | 3157 | \end{note}
|
3158 | 3158 |
|
3159 | 3159 | \pnum
|
|
3188 | 3188 | every iterator in the range \range{first}{last}.
|
3189 | 3189 | \begin{note}
|
3190 | 3190 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3191 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3191 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3192 | 3192 | \end{note}
|
3193 | 3193 |
|
3194 | 3194 | \pnum
|
|
3205 | 3205 | \pnum
|
3206 | 3206 | \begin{note}
|
3207 | 3207 | Does not return a copy of its \tcode{Function} parameter,
|
3208 |
| -since parallelization may not permit efficient state accumulation. |
| 3208 | +since parallelization often does not permit efficient state accumulation. |
3209 | 3209 | \end{note}
|
3210 | 3210 | \end{itemdescr}
|
3211 | 3211 |
|
|
3229 | 3229 | starting from \tcode{first} and proceeding to \tcode{last - 1}.
|
3230 | 3230 | \begin{note}
|
3231 | 3231 | If the result of \tcode{invoke(proj, *i)} is a mutable reference,
|
3232 |
| -\tcode{f} may apply non-constant functions. |
| 3232 | +\tcode{f} can apply non-constant functions. |
3233 | 3233 | \end{note}
|
3234 | 3234 |
|
3235 | 3235 | \pnum
|
|
3278 | 3278 | every iterator in the range \range{first}{first + n} in order.
|
3279 | 3279 | \begin{note}
|
3280 | 3280 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3281 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3281 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3282 | 3282 | \end{note}
|
3283 | 3283 |
|
3284 | 3284 | \pnum
|
|
3314 | 3314 | every iterator in the range \range{first}{first + n}.
|
3315 | 3315 | \begin{note}
|
3316 | 3316 | If the type of \tcode{first} meets the requirements of a mutable iterator,
|
3317 |
| -\tcode{f} may apply non-constant functions through the dereferenced iterator. |
| 3317 | +\tcode{f} can apply non-constant functions through the dereferenced iterator. |
3318 | 3318 | \end{note}
|
3319 | 3319 |
|
3320 | 3320 | \pnum
|
|
3349 | 3349 | \range{first}{first + n} in order.
|
3350 | 3350 | \begin{note}
|
3351 | 3351 | If the result of \tcode{invoke(proj, *i)} is a mutable reference,
|
3352 |
| -\tcode{f} may apply non-constant functions. |
| 3352 | +\tcode{f} can apply non-constant functions. |
3353 | 3353 | \end{note}
|
3354 | 3354 |
|
3355 | 3355 | \pnum
|
|
4389 | 4389 | do not overlap.
|
4390 | 4390 | \begin{note}
|
4391 | 4391 | For the overload with an \tcode{ExecutionPolicy},
|
4392 |
| -there may be a performance cost |
| 4392 | +there might be a performance cost |
4393 | 4393 | if \tcode{iterator_traits<For\-ward\-It\-er\-ator1>::value_type}
|
4394 | 4394 | is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
|
4395 | 4395 | \end{note}
|
|
5287 | 5287 | do not overlap.
|
5288 | 5288 | \begin{note}
|
5289 | 5289 | For the overloads with an \tcode{ExecutionPolicy},
|
5290 |
| -there may be a performance cost |
| 5290 | +there might be a performance cost |
5291 | 5291 | if \tcode{iterator_traits<ForwardIterator1>::value_type} does not meet
|
5292 | 5292 | the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
|
5293 | 5293 | \end{note}
|
|
5474 | 5474 | \oldconcept{CopyAssignable} requirements.
|
5475 | 5475 | \begin{note}
|
5476 | 5476 | For the overloads with an \tcode{ExecutionPolicy},
|
5477 |
| - there may be a performance cost |
| 5477 | + there might be a performance cost |
5478 | 5478 | if the value type of \tcode{ForwardIterator1} does not meet both the
|
5479 | 5479 | \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements.
|
5480 | 5480 | \end{note}
|
|
7009 | 7009 |
|
7010 | 7010 | \begin{note}
|
7011 | 7011 | For the overload with an \tcode{ExecutionPolicy},
|
7012 |
| -there may be a performance cost if \tcode{first}'s value type |
| 7012 | +there might be a performance cost if \tcode{first}'s value type |
7013 | 7013 | does not meet the \oldconcept{CopyConstructible} requirements.
|
7014 | 7014 | \end{note}
|
7015 | 7015 |
|
|
9527 | 9527 | that \tcode{exclusive_scan} excludes the $i^\text{th}$ input element
|
9528 | 9528 | from the $i^\text{th}$ sum.
|
9529 | 9529 | If \tcode{binary_op} is not mathematically associative,
|
9530 |
| -the behavior of \tcode{exclusive_scan} may be nondeterministic. |
| 9530 | +the behavior of \tcode{exclusive_scan} might be nondeterministic. |
9531 | 9531 | \end{note}
|
9532 | 9532 | \end{itemdescr}
|
9533 | 9533 |
|
|
9654 | 9654 | that \tcode{inclusive_scan} includes the $i^\text{th}$ input element
|
9655 | 9655 | in the $i^\text{th}$ sum.
|
9656 | 9656 | If \tcode{binary_op} is not mathematically associative,
|
9657 |
| -the behavior of \tcode{inclusive_scan} may be nondeterministic. |
| 9657 | +the behavior of \tcode{inclusive_scan} might be nondeterministic. |
9658 | 9658 | \end{note}
|
9659 | 9659 | \end{itemdescr}
|
9660 | 9660 |
|
|
9729 | 9729 | \tcode{transform_inclusive_scan} is that \tcode{trans\-form\-_\-exclusive_scan}
|
9730 | 9730 | excludes the $i^\text{th}$ input element from the $i^\text{th}$ sum.
|
9731 | 9731 | If \tcode{binary_op} is not mathematically associative,
|
9732 |
| -the behavior of \tcode{transform_exclusive_scan} may be nondeterministic. |
| 9732 | +the behavior of \tcode{transform_exclusive_scan} might be nondeterministic. |
9733 | 9733 | \tcode{transform_exclusive_scan}
|
9734 | 9734 | does not apply \tcode{unary_op} to \tcode{init}.
|
9735 | 9735 | \end{note}
|
|
9833 | 9833 | \tcode{transform_inclusive_scan} is that \tcode{trans\-form\-_\-inclusive_scan}
|
9834 | 9834 | includes the $i^\text{th}$ input element in the $i^\text{th}$ sum.
|
9835 | 9835 | If \tcode{binary_op} is not mathematically associative,
|
9836 |
| -the behavior of \tcode{transform_inclusive_scan} may be nondeterministic. |
| 9836 | +the behavior of \tcode{transform_inclusive_scan} might be nondeterministic. |
9837 | 9837 | \tcode{transform_inclusive_scan} does not
|
9838 | 9838 | apply \tcode{unary_op} to \tcode{init}.
|
9839 | 9839 | \end{note}
|
|
0 commit comments