Skip to content

Commit 0882411

Browse files
committed
Merge pull request #46 from jaredhoberock/master
N4407
2 parents 6c7dcb9 + 329cc24 commit 0882411

8 files changed

+180
-287
lines changed

README.md

+7-17
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,21 @@
1-
Document Number: N4353
2-
Date: 2015-01-08
1+
Document Number: N4408
2+
Date: 2015-04-10
33
Revises:
44
Project: Programming Language C++
55
Project Number: TS 19570
66
Reply-to: Jared Hoberock
77
NVIDIA Corporation
88
99

10-
# Parallelism TS Editor's Report, pre-DTS ballot
10+
# Parallelism TS Editor's Report, pre-Lenexa mailing
1111

12-
N4352 is the latest Parallelism TS Working Draft. It contains editorial changes to the Parallelism TS as directed by an editing committee appointed during the Urbana meeting to approve the correctness of the Parallelism TS working paper.
12+
N4407 is the latest Parallelism TS Working Draft. It contains editorial changes to the Parallelism TS to address whitespace and other formatting issues.
1313

14-
N4352 updates the previous draft, N4310, published in the post-Urbana mailing.
14+
N4407 updates the previous draft, N4352, published in the midterm mailing.
1515

16-
N4354 is document N4352 reformatted as a DTS ballot document. It updates N4312, which was published in the post-Urbana mailing.
16+
N4409 is document N4407 reformatted as a TS document. It updates N4354, which was published in the midterm mailing.
1717

1818
## Editorial Changes
1919

20-
1. A missing signature for `execution_policy::type` was added to the synopsis in Section 2.7.
21-
2. A missing `ExecutionPolicy` overload signature for `for_each_n` was added to the synopsis in Section 4.3.1.
22-
3. Missing `ExecutionPolicy` overload signatures for `reduce`, `exclusive_scan`, `inclusive_scan`, `transform_reduce`, `transform_exclusive_scan`, and `transform_inclusive_scan` were added to the synopsis in Section 4.4.1.
23-
24-
## Acknowledgements
25-
26-
Thanks to the review committee, who identified these issues.
27-
28-
* Hans Boehm
29-
* Lawrence Crowl
30-
* Alisdair Meredith
20+
Eliminated spurious whitespace and paragraph numbers and manually broke code lines which were spilling into the margin.
3121

algorithms.html

+75-109
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,8 @@ <h1>Definitions</h1>
348348
<li><code>a1</code> when <code>N</code> is <code>1</code></li>
349349

350350
<li>
351-
<code>op(<em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(op, a1, ..., aK), <em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(op, aM, ..., aN)</code> where <code>1 &lt; K+1 = M &le; N</code>.
351+
<code>op(<em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(op, a1, ..., aK), <em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(op, aM, </code><br>
352+
<code>..., aN)</code> where <code>1 &lt; K+1 = M &le; N</code>.
352353
</li>
353354
</ul>
354355
</p>
@@ -389,13 +390,11 @@ <h1>Header <code>&lt;experimental/algorithm&gt;</code> synopsis</h1>
389390
<h1>For each</h1>
390391

391392
<cxx-function>
392-
<cxx-signature>
393-
template&lt;class ExecutionPolicy,
394-
class InputIterator, class Function&gt;
395-
void for_each(ExecutionPolicy&amp;&amp; exec,
396-
InputIterator first, InputIterator last,
397-
Function f);
398-
</cxx-signature>
393+
<cxx-signature>template&lt;class ExecutionPolicy,
394+
class InputIterator, class Function&gt;
395+
void for_each(ExecutionPolicy&amp;&amp; exec,
396+
InputIterator first, InputIterator last,
397+
Function f);</cxx-signature>
399398

400399
<cxx-effects>
401400
Applies <code>f</code> to the result of dereferencing every iterator in the range <code>[first,last)</code>.
@@ -426,11 +425,9 @@ <h1>For each</h1>
426425
</cxx-function>
427426

428427
<cxx-function>
429-
<cxx-signature>
430-
template&lt;class InputIterator, class Size, class Function&gt;
431-
InputIterator for_each_n(InputIterator first, Size n,
432-
Function f);
433-
</cxx-signature>
428+
<cxx-signature>template&lt;class InputIterator, class Size, class Function&gt;
429+
InputIterator for_each_n(InputIterator first, Size n,
430+
Function f);</cxx-signature>
434431

435432
<cxx-requires>
436433
<code>Function</code> shall meet the requirements of <code>MoveConstructible</code>
@@ -460,13 +457,11 @@ <h1>For each</h1>
460457
</cxx-function>
461458

462459
<cxx-function>
463-
<cxx-signature>
464-
template&lt;class ExecutionPolicy,
465-
class InputIterator, class Size, class Function&gt;
466-
InputIterator for_each_n(ExecutionPolicy &amp;&amp; exec,
467-
InputIterator first, Size n,
468-
Function f);
469-
</cxx-signature>
460+
<cxx-signature>template&lt;class ExecutionPolicy,
461+
class InputIterator, class Size, class Function&gt;
462+
InputIterator for_each_n(ExecutionPolicy &amp;&amp; exec,
463+
InputIterator first, Size n,
464+
Function f);</cxx-signature>
470465

471466
<cxx-effects>
472467
Applies <code>f</code> to the result of dereferencing every iterator in the range
@@ -669,34 +664,28 @@ <h1>Header <code>&lt;experimental/numeric&gt;</code> synopsis</h1>
669664
<h1>Reduce</h1>
670665

671666
<cxx-function>
672-
<cxx-signature>
673-
template&lt;class InputIterator&gt;
674-
typename iterator_traits&lt;InputIterator&gt;::value_type
675-
reduce(InputIterator first, InputIterator last);
676-
</cxx-signature>
667+
<cxx-signature>template&lt;class InputIterator&gt;
668+
typename iterator_traits&lt;InputIterator&gt;::value_type
669+
reduce(InputIterator first, InputIterator last);</cxx-signature>
677670

678671
<cxx-effects>
679672
Same as <code>reduce(first, last, typename iterator_traits&lt;InputIterator&gt;::value_type{})</code>.
680673
</cxx-effects>
681674
</cxx-function>
682675

683676
<cxx-function>
684-
<cxx-signature>
685-
template&lt;class InputIterator, class T&gt;
686-
T reduce(InputIterator first, InputIterator last, T init);
687-
</cxx-signature>
677+
<cxx-signature>template&lt;class InputIterator, class T&gt;
678+
T reduce(InputIterator first, InputIterator last, T init);</cxx-signature>
688679

689680
<cxx-effects>
690681
Same as <code>reduce(first, last, init, plus&lt;&gt;())</code>.
691682
</cxx-effects>
692683
</cxx-function>
693684

694685
<cxx-function>
695-
<cxx-signature>
696-
template&lt;class InputIterator, class T, class BinaryOperation&gt;
697-
T reduce(InputIterator first, InputIterator last, T init,
698-
BinaryOperation binary_op);
699-
</cxx-signature>
686+
<cxx-signature>template&lt;class InputIterator, class T, class BinaryOperation&gt;
687+
T reduce(InputIterator first, InputIterator last, T init,
688+
BinaryOperation binary_op);</cxx-signature>
700689

701690
<cxx-returns>
702691
<code><em>GENERALIZED_SUM</em>(binary_op, init, *first, ..., *(first + (last - first) - 1))</code>.
@@ -722,29 +711,21 @@ <h1>Reduce</h1>
722711
<h1>Exclusive scan</h1>
723712

724713
<cxx-function>
725-
<cxx-signature>
726-
template&lt;class InputIterator, class OutputIterator,
727-
class T&gt;
728-
OutputIterator
729-
exclusive_scan(InputIterator first, InputIterator last,
730-
OutputIterator result,
731-
T init);
732-
</cxx-signature>
714+
<cxx-signature>template&lt;class InputIterator, class OutputIterator, class T&gt;
715+
OutputIterator exclusive_scan(InputIterator first, InputIterator last,
716+
OutputIterator result,
717+
T init);</cxx-signature>
733718

734719
<cxx-effects>
735720
Same as <code>exclusive_scan(first, last, result, init, plus&lt;&gt;())</code>.
736721
</cxx-effects>
737722
</cxx-function>
738723

739724
<cxx-function>
740-
<cxx-signature>
741-
template&lt;class InputIterator, class OutputIterator,
742-
class T, class BinaryOperation&gt;
743-
OutputIterator
744-
exclusive_scan(InputIterator first, InputIterator last,
745-
OutputIterator result,
746-
T init, BinaryOperation binary_op);
747-
</cxx-signature>
725+
<cxx-signature>template&lt;class InputIterator, class OutputIterator, class T, class BinaryOperation&gt;
726+
OutputIterator exclusive_scan(InputIterator first, InputIterator last,
727+
OutputIterator result,
728+
T init, BinaryOperation binary_op);</cxx-signature>
748729

749730
<cxx-effects>
750731
Assigns through each iterator <code>i</code> in <code>[result,result + (last - first))</code> the
@@ -777,34 +758,24 @@ <h1>Exclusive scan</h1>
777758
<h1>Inclusive scan</h1>
778759

779760
<cxx-function>
780-
<cxx-signature>
781-
template&lt;class InputIterator, class OutputIterator&gt;
782-
OutputIterator
783-
inclusive_scan(InputIterator first, InputIterator last,
784-
OutputIterator result);
785-
</cxx-signature>
761+
<cxx-signature>template&lt;class InputIterator, class OutputIterator&gt;
762+
OutputIterator inclusive_scan(InputIterator first, InputIterator last,
763+
OutputIterator result);</cxx-signature>
786764

787765
<cxx-effects>
788766
Same as <code>inclusive_scan(first, last, result, plus&lt;&gt;())</code>.
789767
</cxx-effects>
790768
</cxx-function>
791769

792770
<cxx-function>
793-
<cxx-signature>
794-
template&lt;class InputIterator, class OutputIterator,
795-
class BinaryOperation&gt;
796-
OutputIterator
797-
inclusive_scan(InputIterator first, InputIterator last,
798-
OutputIterator result,
799-
BinaryOperation binary_op);
800-
801-
template&lt;class InputIterator, class OutputIterator,
802-
class BinaryOperation&gt;
803-
OutputIterator
804-
inclusive_scan(InputIterator first, InputIterator last,
805-
OutputIterator result,
806-
BinaryOperation binary_op, T init);
807-
</cxx-signature>
771+
<cxx-signature>template&lt;class InputIterator, class OutputIterator, class BinaryOperation&gt;
772+
OutputIterator inclusive_scan(InputIterator first, InputIterator last,
773+
OutputIterator result,
774+
BinaryOperation binary_op);</cxx-signature>
775+
<cxx-signature>template&lt;class InputIterator, class OutputIterator, class BinaryOperation&gt;
776+
OutputIterator inclusive_scan(InputIterator first, InputIterator last,
777+
OutputIterator result,
778+
BinaryOperation binary_op, T init);</cxx-signature>
808779

809780
<cxx-effects>
810781
Assigns through each iterator <code>i</code> in <code>[result,result + (last - first))</code> the value of
@@ -839,14 +810,13 @@ <h1>Inclusive scan</h1>
839810
<h1>Transform reduce</h1>
840811

841812
<cxx-function>
842-
<cxx-signature>
843-
template&lt;class InputIterator, class UnaryFunction, class T, class BinaryOperation&gt;
844-
T transform_reduce(InputIterator first, InputIterator last,
845-
UnaryOperation unary_op, T init, BinaryOperation binary_op);
846-
</cxx-signature>
813+
<cxx-signature>template&lt;class InputIterator, class UnaryFunction, class T, class BinaryOperation&gt;
814+
T transform_reduce(InputIterator first, InputIterator last,
815+
UnaryOperation unary_op, T init, BinaryOperation binary_op);</cxx-signature>
847816

848817
<cxx-returns>
849-
<code><em>GENERALIZED_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (last - first) - 1)))</code>.
818+
<code><em>GENERALIZED_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (last - first) -</code><br>
819+
<code>1)))</code>.
850820
</cxx-returns>
851821

852822
<cxx-requires>
@@ -867,20 +837,18 @@ <h1>Transform reduce</h1>
867837
<h1>Transform exclusive scan</h1>
868838

869839
<cxx-function>
870-
<cxx-signature>
871-
template&lt;class InputIterator, class OutputIterator,
872-
class UnaryOperation,
873-
class T, class BinaryOperation&gt;
874-
OutputIterator
875-
transform_exclusive_scan(InputIterator first, InputIterator last,
876-
OutputIterator result,
877-
UnaryOperation unary_op,
878-
T init, BinaryOperation binary_op);
879-
</cxx-signature>
840+
<cxx-signature>template&lt;class InputIterator, class OutputIterator,
841+
class UnaryOperation,
842+
class T, class BinaryOperation&gt;
843+
OutputIterator transform_exclusive_scan(InputIterator first, InputIterator last,
844+
OutputIterator result,
845+
UnaryOperation unary_op,
846+
T init, BinaryOperation binary_op);</cxx-signature>
880847

881848
<cxx-effects>
882849
Assigns through each iterator <code>i</code> in <code>[result,result + (last - first))</code> the value of
883-
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (i - result) - 1)))</code>.
850+
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (i</code><br>
851+
<code>- result) - 1)))</code>.
884852
</cxx-effects>
885853

886854
<cxx-returns>
@@ -908,30 +876,28 @@ <h1>Transform exclusive scan</h1>
908876
<h1>Transform inclusive scan</h1>
909877

910878
<cxx-function>
911-
<cxx-signature>
912-
template&lt;class InputIterator, class OutputIterator,
913-
class UnaryOperation,
914-
class BinaryOperation&gt;
915-
OutputIterator
916-
transform_inclusive_scan(InputIterator first, InputIterator last,
917-
OutputIterator result,
918-
UnaryOperation unary_op,
919-
BinaryOperation binary_op);
920-
921-
template&lt;class InputIterator, class OutputIterator,
922-
class UnaryOperation,
923-
class BinaryOperation, class T&gt;
924-
OutputIterator
925-
transform_inclusive_scan(InputIterator first, InputIterator last,
926-
OutputIterator result,
927-
UnaryOperation unary_op,
928-
BinaryOperation binary_op, T init);
929-
</cxx-signature>
879+
<cxx-signature>template&lt;class InputIterator, class OutputIterator,
880+
class UnaryOperation,
881+
class BinaryOperation&gt;
882+
OutputIterator transform_inclusive_scan(InputIterator first, InputIterator last,
883+
OutputIterator result,
884+
UnaryOperation unary_op,
885+
BinaryOperation binary_op);</cxx-signature>
886+
887+
<cxx-signature>template&lt;class InputIterator, class OutputIterator,
888+
class UnaryOperation,
889+
class BinaryOperation, class T&gt;
890+
OutputIterator transform_inclusive_scan(InputIterator first, InputIterator last,
891+
OutputIterator result,
892+
UnaryOperation unary_op,
893+
BinaryOperation binary_op, T init);</cxx-signature>
930894

931895
<cxx-effects>
932896
Assigns through each iterator <code>i</code> in <code>[result,result + (last - first))</code> the value of
933-
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, unary_op(*first), ..., unary_op(*(first + (i - result))))</code> or
934-
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (i - result))))</code>
897+
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, unary_op(*first), ..., unary_op(*(first + (i -</code><br>
898+
<code>result))))</code> or
899+
<code><em>GENERALIZED_NONCOMMUTATIVE_SUM</em>(binary_op, init, unary_op(*first), ..., unary_op(*(first + (i</code><br>
900+
<code>- result))))</code>
935901
if <code>init</code> is provided.
936902
</cxx-effects>
937903

exceptions.html

+4-12
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ <h1>Header <code>&lt;experimental/exception_list&gt;</code> synopsis</h1>
9090
</p>
9191

9292
<cxx-function>
93-
<cxx-signature>
94-
size_t size() const noexcept;
95-
</cxx-signature>
93+
<cxx-signature>size_t size() const noexcept;</cxx-signature>
9694

9795
<cxx-returns>
9896
The number of <code>exception_ptr</code> objects contained within the <code>exception_list</code>.
@@ -104,29 +102,23 @@ <h1>Header <code>&lt;experimental/exception_list&gt;</code> synopsis</h1>
104102
</cxx-function>
105103

106104
<cxx-function>
107-
<cxx-signature>
108-
iterator begin() const noexcept;
109-
</cxx-signature>
105+
<cxx-signature>iterator begin() const noexcept;</cxx-signature>
110106

111107
<cxx-returns>
112108
An iterator referring to the first <code>exception_ptr</code> object contained within the <code>exception_list</code>.
113109
</cxx-returns>
114110
</cxx-function>
115111

116112
<cxx-function>
117-
<cxx-signature>
118-
iterator end() const noexcept;
119-
</cxx-signature>
113+
<cxx-signature>iterator end() const noexcept;</cxx-signature>
120114

121115
<cxx-returns>
122116
An iterator that is past the end of the owned sequence.
123117
</cxx-returns>
124118
</cxx-function>
125119

126120
<cxx-function>
127-
<cxx-signature>
128-
const char* what() const noexcept override;
129-
</cxx-signature>
121+
<cxx-signature>const char* what() const noexcept override;</cxx-signature>
130122

131123
<cxx-returns>
132124
An implementation-defined NTBS.

execution_policies.html

+3-7
Original file line numberDiff line numberDiff line change
@@ -191,18 +191,14 @@ <h1><code>execution_policy</code> construct/assign</h1>
191191
<h1><code>execution_policy</code> object access</h1>
192192

193193
<cxx-function>
194-
<cxx-signature>
195-
const type_info&amp; type() const noexcept;
196-
</cxx-signature>
194+
<cxx-signature>const type_info&amp; type() const noexcept;</cxx-signature>
197195

198196
<cxx-returns><code>typeid(T)</code>, such that <code>T</code> is the type of the execution policy object contained by <code>*this</code>.</cxx-returns>
199197
</cxx-function>
200198

201199
<cxx-function>
202-
<cxx-signature>
203-
template&lt;class T&gt; T* get() noexcept;
204-
template&lt;class T&gt; const T* get() const noexcept;
205-
</cxx-signature>
200+
<cxx-signature>template&lt;class T&gt; T* get() noexcept;</cxx-signature>
201+
<cxx-signature>template&lt;class T&gt; const T* get() const noexcept;</cxx-signature>
206202

207203
<cxx-returns>If <code>target_type() == typeid(T)</code>, a pointer to the stored execution policy object; otherwise a null pointer.</cxx-returns>
208204

0 commit comments

Comments
 (0)