Skip to content

Commit c235521

Browse files
Merge pull request #55 from jaredhoberock/jacksonville_2018
Changes for 2018 pre-Jacksonville mailing
2 parents e74d968 + 82dbd3a commit c235521

9 files changed

+258
-1766
lines changed

README.md

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
Document Number: N4707
2-
Date: 2017-11-22
1+
Document Number: N4726
2+
Date: 2018-02-12
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, post-Albuquerque mailing
10+
# Parallelism TS Editor's Report, pre-Jacksonville mailing
1111

12-
N4706 is the proposed working draft of Parallelism TS Version 2. It contains changes to the Parallelism TS as directed by the committee at the Albuquerque meeting.
12+
N4725 is the proposed working draft of Parallelism TS Version 2. It contains editorial changes to the Parallelism TS.
1313

14-
N4706 updates the previous draft, N4696, published in the pre-Toronto mailing.
15-
16-
# Technical Changes
17-
18-
* Apply P0776R1 - Rebase the Parallelism TS onto the C++17 Standard
19-
* Apply P0075R2 - Template Library for Parallel For Loops
14+
N4725 updates the previous draft, N4706, published in the post-Toronto mailing.
2015

2116
# Acknowledgements
2217

23-
Thanks to Alisdair Meredith and Pablo Halpern for reviewing these changes.
18+
Thanks to Pablo Halpern and Matthias Kretz for suggesting editorial changes.
2419

algorithms.html

+201-1,342
Large diffs are not rendered by default.

exceptions.html

+5-64
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,33 @@
11
<cxx-clause id="parallel.exceptions">
22
<h1>Parallel exceptions</h1>
3-
<cxx-section id="parallel.exceptions.behavior">
4-
<h1><del>Exception reporting behavior</del></h1>
5-
<del>
6-
<p>
7-
During the execution of a standard parallel algorithm,
8-
if temporary memory resources are required and none are available,
9-
the algorithm throws a <code>std::bad_alloc</code> exception.
10-
</p>
11-
<p>
12-
During the execution of a standard parallel algorithm, if the invocation of an element access function
13-
exits via an uncaught exception, the behavior of the program is determined by the type of
14-
execution policy used to invoke the algorithm:
15-
16-
<ul>
17-
<li>
18-
If the execution policy object is of type <code>parallel_vector_execution_policy</code>, <code>unsequenced_policy</code>, or <code>vector_policy</code>,
19-
<code>std::terminate</code> shall be called.
20-
</li>
21-
<li>
22-
If the execution policy object is of type <code>sequential_execution_policy</code> or
23-
<code>parallel_execution_policy</code>, the execution of the algorithm exits via an
24-
exception. The exception shall be an <code>exception_list</code> containing all uncaught exceptions thrown during
25-
the invocations of element access functions, or optionally the uncaught exception if there was only one.<pre>
26-
</pre>
27-
28-
<cxx-note>
29-
For example, when <code>for_each</code> is executed sequentially,
30-
if an invocation of the user-provided function object throws an exception, <code>for_each</code> can exit via the uncaught exception, or throw an <code>exception_list</code> containing the original exception.
31-
</cxx-note><pre>
32-
</pre>
33-
34-
<cxx-note>
35-
These guarantees imply that, unless the algorithm has failed to allocate memory and
36-
exits via <code>std::bad_alloc</code>, all exceptions thrown during the execution of
37-
the algorithm are communicated to the caller. It is unspecified whether an algorithm implementation will "forge ahead" after
38-
encountering and capturing a user exception.
39-
</cxx-note><pre>
40-
</pre>
41-
<cxx-note>
42-
The algorithm may exit via the <code>std::bad_alloc</code> exception even if one or more
43-
user-provided function objects have exited via an exception. For example, this can happen when an algorithm fails to allocate memory while
44-
creating or adding elements to the <code>exception_list</code> object.
45-
</cxx-note>
46-
</li>
47-
48-
<li>
49-
If the execution policy object is of any other type, the behavior is implementation-defined.
50-
</li>
51-
</ul>
52-
</p>
53-
</del>
54-
</cxx-section>
553
<cxx-section id="parallel.exceptions.synopsis">
564
<h1>Header <code>&lt;experimental/exception_list&gt;</code> synopsis</h1>
575
<pre>
586

59-
<del>namespace std {</del>
60-
namespace <ins>std::</ins>experimental {
61-
<ins>inline </ins>namespace parallel<ins>ism_v2</ins> {
62-
<del>inline namespace v2 {</del>
7+
namespace std::experimental {
8+
inline namespace parallelism_v2 {
639

6410
class exception_list : public exception
6511
{
6612
public:
67-
<del>typedef <em>unspecified</em> iterator;</del>
68-
<ins>using iterator = <em>unspecified</em>;</ins>
13+
using iterator = <em>unspecified</em>;
6914

7015
size_t size() const noexcept;
7116
iterator begin() const noexcept;
7217
iterator end() const noexcept;
7318

7419
const char* what() const noexcept override;
7520
};
76-
<del>}</del>
7721
}
7822
}
79-
<del>}</del>
8023
</pre>
8124

8225
<p>
83-
The class <code>exception_list</code> owns a sequence of <code>exception_ptr</code> objects.<del> The parallel
84-
algorithms may use the <code>exception_list</code> to communicate uncaught exceptions encountered during parallel execution to the
85-
caller of the algorithm.</del>
26+
The class <code>exception_list</code> owns a sequence of <code>exception_ptr</code> objects.
8627
</p>
8728

8829
<p>
89-
The type <code>exception_list::iterator</code> shall fulfill the requirements of
30+
The type <code>exception_list::iterator</code> <ins>fulfills</ins><del>shall fulfill</del> the requirements of
9031
<code>ForwardIterator</code>.
9132
</p>
9233

0 commit comments

Comments
 (0)