From 2a6245cf9bbdd4e514de026d57e2c7ff0f81f679 Mon Sep 17 00:00:00 2001
From: Jared Hoberock
Date: Tue, 5 May 2015 17:08:24 -0500
Subject: [PATCH 1/7] Add new front matter for D4505
---
front_matter.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/front_matter.html b/front_matter.html
index ad32aad..8de1736 100644
--- a/front_matter.html
+++ b/front_matter.html
@@ -1,8 +1,8 @@
-N4407
+D450519570
-
- N4352
+
+ N4407
Jared Hoberock
NVIDIA Corporation
From 1b22ab2e755cbcff3e5a9f6590757494a978ccbd Mon Sep 17 00:00:00 2001
From: Jared Hoberock
Date: Tue, 5 May 2015 17:15:49 -0500
Subject: [PATCH 2/7] Add new editor's report
---
README.md | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index ed2dfe1..a6a29b4 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
- Document Number: N4408
- Date: 2015-04-10
+ Document Number: D4506
+ Date: 2015-05-05
Revises:
Project: Programming Language C++
Project Number: TS 19570
@@ -7,15 +7,24 @@
NVIDIA Corporation
jhoberock@nvidia.com
-# Parallelism TS Editor's Report, pre-Lenexa mailing
+# Parallelism TS Editor's Report, Lenexa meeting
-N4407 is the latest Parallelism TS Working Draft. It contains editorial changes to the Parallelism TS to address whitespace and other formatting issues.
+D4505 is the latest Parallelism TS Working Draft. It contains editorial changes to the Parallelism TS to apply the following revisions:
-N4407 updates the previous draft, N4352, published in the midterm mailing.
+ * N4274 - Relaxing Packing Rules for Exceptions Thrown by Parallel Algorithms - Proposed Wording (Revision 1)
+ * D???? - Feature Test Macros for the Parallelism TS
-N4409 is document N4407 reformatted as a TS document. It updates N4354, which was published in the midterm mailing.
+D4505 updates the previous draft, N4407, published in the pre-Lenexa mailing.
+
+N4507 is document N4505 reformatted as a TS document. It updates N4409, which was published in the pre-Lenexa mailing.
+
+## Technical Changes
+
+* Applied N4274, which relaxes the exception packaging rules for exceptions thrown by parallel algorithms. Additionally, changed instances of "terminates with (exception)" phrasing to "exits via (exception)", as directed by the Library Working Group.
+
+* Applied D????, which introduces feature test macros for the functionality of the Parallelism TS.
## Editorial Changes
-Eliminated spurious whitespace and paragraph numbers and manually broke code lines which were spilling into the margin.
+None.
From 257cf30cea6b288f37dcf48b1f70620ccb4a868d Mon Sep 17 00:00:00 2001
From: Jared Hoberock
Date: Tue, 5 May 2015 17:32:28 -0500
Subject: [PATCH 3/7] Apply N4274
---
exceptions.html | 23 +++++++++---------
general.html | 8 +++++++
parallelism-ts.html | 55 ++++++++++++++++++++++++++------------------
parallelism-ts.pdf | Bin 141295 -> 211069 bytes
4 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/exceptions.html b/exceptions.html
index 7dd96cd..4c07716 100644
--- a/exceptions.html
+++ b/exceptions.html
@@ -9,7 +9,7 @@
Exception reporting behavior
During the execution of a standard parallel algorithm, if the invocation of an element access function
- terminates with an uncaught exception, the behavior of the program is determined by the type of
+ exits viaterminates with an uncaught exception, the behavior of the program is determined by the type of
execution policy used to invoke the algorithm:
@@ -19,29 +19,30 @@
Exception reporting behavior
If the execution policy object is of type sequential_execution_policy or
- parallel_execution_policy, the execution of the algorithm terminates with an
- exception_list exception. All uncaught exceptions thrown during
- the invocations of element access functions shall be contained in the
- exception_list.
+ parallel_execution_policy, the execution of the algorithm exits viaterminates with an
+ exception_list exception. The exception shall be an exception_list containing allAll uncaught exceptions thrown during
+ the invocations of element access functions, or optionally the uncaught exception if there was only oneshall be contained in the
+ exception_list.
- For example, the number of invocations of the user-provided function object in
- for_each is unspecified. When for_each is executed sequentially,
- only one exception will be contained in the exception_list object.
+ For example, the number of invocations of the user-provided function object in
+ for_each is unspecified. Wwhen for_each is executed sequentially,
+ if an invocation of the user-provided function object throws an exception, for_each can exit via the uncaught exception, or throw an exception_list containing the original exception.
+ only one exception will be contained in the exception_list object.
These guarantees imply that, unless the algorithm has failed to allocate memory and
- terminated with std::bad_alloc, all exceptions thrown during the execution of
+ exits viaterminated withstd::bad_alloc, all exceptions thrown during the execution of
the algorithm are communicated to the caller. It is unspecified whether an algorithm implementation will "forge ahead" after
encountering and capturing a user exception.
- The algorithm may terminate with the std::bad_alloc exception even if one or more
- user-provided function objects have terminated with an exception. For example, this can happen when an algorithm fails to allocate memory while
+ The algorithm may exit viaterminate with the std::bad_alloc exception even if one or more
+ user-provided function objects have exited viaterminated with an exception. For example, this can happen when an algorithm fails to allocate memory while
creating or adding elements to the exception_list object.
User-provided function objects to be applied during the
execution of the algorithm, if required by the specification.
+
+
+ Operations on those function objects required by the specification.
+
+ [ Note:
+
+ See clause 25.1 of C++ Standard Algorithms Library.
+
+ — end note ]
+
+
These functions are herein called element access functions.
@@ -1492,7 +1503,7 @@
Contents
During the execution of a standard parallel algorithm, if the invocation of an element access function
- terminates with an uncaught exception, the behavior of the program is determined by the type of
+ exits viaterminates with an uncaught exception, the behavior of the program is determined by the type of
execution policy used to invoke the algorithm:
@@ -1502,25 +1513,26 @@
Contents
If the execution policy object is of type sequential_execution_policy or
- parallel_execution_policy, the execution of the algorithm terminates with an
- exception_list exception. All uncaught exceptions thrown during
- the invocations of element access functions shall be contained in the
- exception_list.
+ parallel_execution_policy, the execution of the algorithm exits viaterminates with an
+ exception_list exception. The exception shall be an exception_list containing allAll uncaught exceptions thrown during
+ the invocations of element access functions, or optionally the uncaught exception if there was only oneshall be contained in the
+ exception_list.
[ Note:
- For example, the number of invocations of the user-provided function object in
- for_each is unspecified. When for_each is executed sequentially,
- only one exception will be contained in the exception_list object.
-
+ For example, the number of invocations of the user-provided function object in
+ for_each is unspecified. Wwhen for_each is executed sequentially,
+ if an invocation of the user-provided function object throws an exception, for_each can exit via the uncaught exception, or throw an exception_list containing the original exception.
+ only one exception will be contained in the exception_list object.
+
— end note ][ Note:
These guarantees imply that, unless the algorithm has failed to allocate memory and
- terminated with std::bad_alloc, all
-exceptions thrown during the execution of
+ exits viaterminated withstd::bad_alloc,
+ all exceptions thrown during the execution of
the algorithm are communicated to the caller. It is
unspecified whether an algorithm implementation will "forge ahead" after
@@ -1530,11 +1542,8 @@
Contents
[ Note:
- The algorithm may terminate with the std::bad_alloc
- exception even if one or more
- user-provided function objects have terminated with an
-exception. For example, this can happen when an algorithm fails to
-allocate memory while
+ The algorithm may exit viaterminate with the std::bad_alloc exception even if one or more
+ user-provided function objects have exited viaterminated with an exception. For example, this can happen when an algorithm fails to allocate memory while
creating or adding elements to the exception_list object.
— end note ]
diff --git a/parallelism-ts.pdf b/parallelism-ts.pdf
index 0a8f57fd3f47187f7c20b2b1a1accdeaded07f61..ef6455e607a9cfec51f94dc769efb2109a35f006 100644
GIT binary patch
literal 211069
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