@@ -340,52 +340,50 @@ <h1>Inductions</h1>
340
340
</ cxx-section >
341
341
342
342
< cxx-section id ="parallel.alg.forloop ">
343
- < h1 > < ins > For loop</ ins > </ h1 >
343
+ < h1 > For loop</ h1 >
344
344
345
345
< cxx-function >
346
- < cxx-signature > < ins > template<class I, class... Rest>
347
- void for_loop(no_deduce_t<I> start, I finish, Rest&&... rest);</ ins > </ cxx-signature >
346
+ < cxx-signature > template<class I, class... Rest>
347
+ void for_loop(no_deduce_t<I> start, I finish, Rest&&... rest);</ cxx-signature >
348
348
349
- < cxx-signature > < ins > template<class ExecutionPolicy,
349
+ < cxx-signature > template<class ExecutionPolicy,
350
350
class I, class... Rest>
351
351
void for_loop(ExecutionPolicy&& exec,
352
352
no_deduce_t<I> start, I finish, Rest&&... rest);
353
353
354
- </ ins > </ cxx-signature >
354
+ </ cxx-signature >
355
355
356
- < cxx-signature > < ins > template<class I, class S, class... Rest>
356
+ < cxx-signature > template<class I, class S, class... Rest>
357
357
void for_loop_strided(no_deduce_t<I> start, I finish,
358
- S stride, Rest&&... rest);</ ins > </ cxx-signature >
358
+ S stride, Rest&&... rest);</ cxx-signature >
359
359
360
- < cxx-signature > < ins > template<class ExecutionPolicy,
360
+ < cxx-signature > template<class ExecutionPolicy,
361
361
class I, class S, class... Rest>
362
362
void for_loop_strided(ExecutionPolicy&& exec,
363
363
no_deduce_t<I> start, I finish,
364
364
S stride, Rest&&... rest);
365
365
366
- </ ins > </ cxx-signature >
366
+ </ cxx-signature >
367
367
368
- < cxx-signature > < ins > template<class I, class Size, class... Rest>
369
- void for_loop_n(I start, Size n, Rest&&... rest);</ ins > </ cxx-signature >
368
+ < cxx-signature > template<class I, class Size, class... Rest>
369
+ void for_loop_n(I start, Size n, Rest&&... rest);</ cxx-signature >
370
370
371
- < cxx-signature > < ins > template<class ExecutionPolicy,
371
+ < cxx-signature > template<class ExecutionPolicy,
372
372
class I, class Size, class... Rest>
373
373
void for_loop_n(ExecutionPolicy&& exec,
374
374
I start, Size n, Rest&&... rest);
375
375
376
- </ ins > </ cxx-signature >
376
+ </ cxx-signature >
377
377
378
- < cxx-signature > < ins > template<class I, class Size, class S, class... Rest>
379
- void for_loop_n_strided(I start, Size n, S stride, Rest&&... rest);</ ins > </ cxx-signature >
378
+ < cxx-signature > template<class I, class Size, class S, class... Rest>
379
+ void for_loop_n_strided(I start, Size n, S stride, Rest&&... rest);</ cxx-signature >
380
380
381
- < cxx-signature > < ins > template<class ExecutionPolicy,
381
+ < cxx-signature > template<class ExecutionPolicy,
382
382
class I, class Size, class S, class... Rest>
383
383
void for_loop_n_strided(ExecutionPolicy&& exec,
384
- I start, Size n, S stride, Rest&&... rest);</ ins > </ cxx-signature >
384
+ I start, Size n, S stride, Rest&&... rest);</ cxx-signature >
385
385
386
- < ins >
387
386
< cxx-requires >
388
- < ins >
389
387
For the overloads with an < code > ExecutionPolicy</ code > , < code > I</ code > shall be an integral type
390
388
or meet the requirements of a forward iterator type; otherwise, < code > I</ code > shall be an integral
391
389
type or meet the requirements of an input iterator type. < code > Size</ code > shall be an integral type
@@ -397,75 +395,65 @@ <h1><ins>For loop</ins></h1>
397
395
followed by exactly one invocable element-access function, < em > f</ em > . For the overloads with an
398
396
< code > ExecutionPolicy</ code > , < em > f</ em > shall meet the requirements of < code > CopyConstructible</ code > ;
399
397
otherwise, < em > f</ em > shall meet the requirements of < code > MoveConstructible</ code > .
400
- </ ins >
401
398
</ cxx-requires >
402
- </ ins >
403
399
404
- < ins >
405
400
< cxx-effects >
406
- < ins >
407
- Applies < em > f</ em > to each element in the < em > input sequence</ em > , as described below, with additional
408
- arguments corresponding to the reductions and inductions in the < code > rest</ code > parameter pack. The
409
- length of the input sequence is:
410
-
411
- < ul >
412
- < li >
413
- < code > n</ code > , if specified,
414
- </ li >
415
-
416
- < li >
417
- otherwise < code > finish - start</ code > if neither < code > n</ code > nor < code > stride</ code > is specified,
418
- </ li >
419
-
420
- < li >
421
- otherwise < code > 1 + (finish-start-1)/stride</ code > if < code > stride</ code > is positive,
422
- </ li >
423
-
424
- < li >
425
- otherwise < code > 1 + (start-finish-1)/-stride</ code > .
426
- </ li >
427
- </ ul >
428
-
429
- The first element in the input sequence is < code > start</ code > . Each subsequent element is generated by adding
430
- < code > stride</ code > to the previous element, if < code > stride</ code > is specified, otherwise by incrementing
431
- the previous element. < cxx-note > As described in the C++ standard, section [algorithms.general], arithmetic
432
- on non-random-access iterators is performed using advance and distance.</ cxx-note > < cxx-note > The order of the
433
- elements of the input sequence is important for determining ordinal position of an application of < em > f</ em > ,
434
- even though the applications themselves may be unordered.</ cxx-note > </ p >
435
-
436
- The first argument to < em > f</ em > is an element from the input sequence. < cxx-note > if < code > I</ code > is an
437
- iterator type, the iterators in the input sequence are not dereferenced before
438
- being passed to < em > f</ em > .</ cxx-note > For each member of the rest parameter pack
439
- excluding < em > f</ em > , an additional argument is passed to each application of < em > f</ em > as follows:
440
-
441
- < ul >
442
- < li >
443
- If the pack member is an object returned by a call to a reduction function listed in section
444
- [parallel.alg.reductions], then the additional argument is a reference to an accumulator of that reduction
445
- object.
446
- </ li >
447
-
448
- < li >
449
- If the pack member is an object returned by a call to < code > induction</ code > , then the additional argument is the
450
- induction value for that induction object corresponding to the position of the application of < em > f</ em > in the input
451
- sequence.
452
- </ li >
453
- </ ul >
454
- </ ins >
401
+ Applies < em > f</ em > to each element in the < em > input sequence</ em > , as described below, with additional
402
+ arguments corresponding to the reductions and inductions in the < code > rest</ code > parameter pack. The
403
+ length of the input sequence is:
404
+
405
+ < ul >
406
+ < li >
407
+ < code > n</ code > , if specified,
408
+ </ li >
409
+
410
+ < li >
411
+ otherwise < code > finish - start</ code > if neither < code > n</ code > nor < code > stride</ code > is specified,
412
+ </ li >
413
+
414
+ < li >
415
+ otherwise < code > 1 + (finish-start-1)/stride</ code > if < code > stride</ code > is positive,
416
+ </ li >
417
+
418
+ < li >
419
+ otherwise < code > 1 + (start-finish-1)/-stride</ code > .
420
+ </ li >
421
+ </ ul >
422
+
423
+ The first element in the input sequence is < code > start</ code > . Each subsequent element is generated by adding
424
+ < code > stride</ code > to the previous element, if < code > stride</ code > is specified, otherwise by incrementing
425
+ the previous element. < cxx-note > As described in the C++ standard, section [algorithms.general], arithmetic
426
+ on non-random-access iterators is performed using advance and distance.</ cxx-note > < cxx-note > The order of the
427
+ elements of the input sequence is important for determining ordinal position of an application of < em > f</ em > ,
428
+ even though the applications themselves may be unordered.</ cxx-note > </ p >
429
+
430
+ The first argument to < em > f</ em > is an element from the input sequence. < cxx-note > if < code > I</ code > is an
431
+ iterator type, the iterators in the input sequence are not dereferenced before
432
+ being passed to < em > f</ em > .</ cxx-note > For each member of the rest parameter pack
433
+ excluding < em > f</ em > , an additional argument is passed to each application of < em > f</ em > as follows:
434
+
435
+ < ul >
436
+ < li >
437
+ If the pack member is an object returned by a call to a reduction function listed in section
438
+ [parallel.alg.reductions], then the additional argument is a reference to an accumulator of that reduction
439
+ object.
440
+ </ li >
441
+
442
+ < li >
443
+ If the pack member is an object returned by a call to < code > induction</ code > , then the additional argument is the
444
+ induction value for that induction object corresponding to the position of the application of < em > f</ em > in the input
445
+ sequence.
446
+ </ li >
447
+ </ ul >
455
448
</ cxx-effects >
456
- </ ins >
457
449
458
- < ins >
459
450
< cxx-complexity >
460
- < ins > Applies < em > f</ em > exactly once for each element of the input sequence.</ ins >
451
+ Applies < em > f</ em > exactly once for each element of the input sequence.
461
452
</ cxx-complexity >
462
- </ ins >
463
453
464
- < ins >
465
454
< cxx-remarks >
466
- < ins > If < em > f</ em > returns a result, the result is ignored.</ ins >
455
+ If < em > f</ em > returns a result, the result is ignored.
467
456
</ cxx-remarks >
468
- </ ins >
469
457
</ cxx-function >
470
458
</ cxx-section >
471
459
0 commit comments