@@ -3,26 +3,27 @@ <h1>Parallel exceptions</h1>
3
3
< cxx-section id ="parallel.exceptions.behavior ">
4
4
< h1 > Exception reporting behavior</ h1 >
5
5
< p >
6
- < ins2 > During the execution of a standard parallel algorithm, </ ins2 >
7
- < del2 > I </ del2 > < ins2 > i </ ins2 > f temporary memory resources are required < del2 > by the algorithm </ del2 > and none are available,
6
+ During the execution of a standard parallel algorithm,
7
+ if temporary memory resources are required and none are available,
8
8
the algorithm throws a < code > std::bad_alloc</ code > exception.
9
9
</ p >
10
10
< p >
11
- During the execution of a standard parallel algorithm, if the application of a function
12
- object terminates with an uncaught exception, the behavior of the program is determined
13
- by the type of execution policy used to invoke the algorithm:
11
+ During the execution of a standard parallel algorithm, if the < del > application of a function
12
+ object</ del > < ins > invocation of an element access function</ ins > terminates with an uncaught
13
+ exception, the behavior of the program is determined by the type of execution policy used to
14
+ invoke the algorithm:
14
15
15
16
< ul >
16
17
< li >
17
- If the execution policy object is of type < code > class < del2 > vector_execution_policy </ del2 > < ins2 > parallel_vector_execution_policy</ ins2 > </ code > ,
18
+ If the execution policy object is of type < code > class parallel_vector_execution_policy</ code > ,
18
19
< code > std::terminate</ code > shall be called.
19
20
</ li >
20
21
< li >
21
22
If the execution policy object is of type < code > sequential_execution_policy</ code > or
22
23
< code > parallel_execution_policy</ code > , the execution of the algorithm terminates with an
23
24
< code > exception_list</ code > exception. All uncaught exceptions thrown during
24
- the application of user-provided function objects shall be contained in the
25
- < code > exception_list</ code > .< pre >
25
+ the < del > application of user-provided function objects</ del > < ins > invocations of element access functions </ ins >
26
+ shall be contained in the < code > exception_list</ code > .< pre >
26
27
</ pre >
27
28
28
29
< cxx-note >
@@ -59,41 +60,28 @@ <h1>Header <code><experimental/exception_list></code> synopsis</h1>
59
60
namespace std {
60
61
namespace experimental {
61
62
namespace parallel {
62
- < ins2 > inline namespace v1 {</ ins2 >
63
+ inline namespace v1 {
63
64
64
65
class exception_list : public exception
65
66
{
66
67
public:
67
- < del2 >
68
- typedef exception_ptr value_type;
69
- typedef const value_type& reference;
70
- typedef const value_type& const_reference;
71
- typedef < em > implementation-defined</ em > const_iterator;
72
- typedef const_iterator iterator;
73
- typedef typename iterator_traits< ins2 > <const_iterator></ ins2 > ::difference_type difference_type;
74
- typedef size_t size_type;</ del2 >
75
- < ins2 >
76
- typedef < em > unspecified</ em > iterator;</ ins2 >
68
+ typedef < em > unspecified</ em > iterator;
77
69
78
70
size_t size() const noexcept;
79
71
iterator begin() const noexcept;
80
72
iterator end() const noexcept;
81
73
82
- < ins2 > const char* what() const noexcept override;</ ins2 >
83
- < del2 >
84
- private:
85
- std::list<exception_ptr> exceptions_; // exposition only
86
- </ del2 >
74
+ const char* what() const override noexcept;
87
75
};
88
- < ins2 > } </ ins2 >
76
+ }
89
77
}
90
78
}
91
79
}
92
80
</ pre >
93
81
94
82
< p >
95
- The class < code > exception_list</ code > < del2 > is a container </ del2 > < ins2 > owns a sequence</ ins2 > of < code > exception_ptr</ code > objects < ins2 > . The</ ins2 > parallel
96
- algorithms may use < ins2 > the < code > exception_list</ code > </ ins2 > to communicate uncaught exceptions encountered during parallel execution to the
83
+ The class < code > exception_list</ code > owns a sequence of < code > exception_ptr</ code > objects. The parallel
84
+ algorithms may use the < code > exception_list</ code > to communicate uncaught exceptions encountered during parallel execution to the
97
85
caller of the algorithm.
98
86
</ p >
99
87
@@ -118,7 +106,7 @@ <h1>Header <code><experimental/exception_list></code> synopsis</h1>
118
106
119
107
< cxx-function >
120
108
< cxx-signature >
121
- < del2 > exception_list:: </ del2 > iterator begin() const noexcept;
109
+ iterator begin() const noexcept;
122
110
</ cxx-signature >
123
111
124
112
< cxx-returns >
@@ -128,21 +116,21 @@ <h1>Header <code><experimental/exception_list></code> synopsis</h1>
128
116
129
117
< cxx-function >
130
118
< cxx-signature >
131
- < del2 > exception_list:: </ del2 > iterator end() const noexcept;
119
+ iterator end() const noexcept;
132
120
</ cxx-signature >
133
121
134
122
< cxx-returns >
135
- An iterator < del2 > which is the past-the-end value for the < code > exception_list </ code > </ del2 > < ins2 > that is past the end of the owned sequence.</ ins2 >
123
+ An iterator that is past the end of the owned sequence.
136
124
</ cxx-returns >
137
125
</ cxx-function >
138
126
139
127
< cxx-function >
140
128
< cxx-signature >
141
- < ins2 > const char* what() const noexcept override;</ ins2 >
129
+ const char* what() const noexcept override;
142
130
</ cxx-signature >
143
131
144
132
< cxx-returns >
145
- < ins2 > An implementation-defined NTBS.</ ins2 >
133
+ An implementation-defined NTBS.
146
134
</ cxx-returns >
147
135
</ cxx-function >
148
136
</ cxx-section >
0 commit comments