11<?xml version =' 1.0' encoding =' utf-8' standalone =' no' ?>
2- <!DOCTYPE issue SYSTEM "lwg-issue.dtd" [
2+ <!DOCTYPE issue SYSTEM "lwg-issue.dtd" [
33 <!ENTITY nbsp "   " >
44] >
55
@@ -22,11 +22,11 @@ paragraph 1 reads
2222</p >
2323<blockquote ><p >
2424<i >Remarks</i >: Called by the implementation when exception handling must
25- be abandoned for any of several reasons (15.5.1), in effect immediately after
26- evaluating the <em >throw-expression</em > (18.8.3.1). May also be called directly by the
25+ be abandoned for any of several reasons (15.5.1), in effect immediately after
26+ evaluating the <em >throw-expression</em > (18.8.3.1). May also be called directly by the
2727program.
2828</p ></blockquote >
29- <p >It is not clear what is "in effect". It was clear in previous drafts where paragraphs
29+ <p >It is not clear what is "in effect". It was clear in previous drafts where paragraphs
30301 and 2 read:
3131</p >
3232<blockquote ><p >
@@ -61,18 +61,18 @@ that was in effect immediately after evaluating the throw-expression".
6161 triggered by the implementation - no throw-expression involved.
6262</li >
6363<li >
64- In case a destructor throws during stack unwinding we have two throw-expressions
64+ In case a destructor throws during stack unwinding we have two throw-expressions
6565 involved.
6666 </li >
6767 </ul >
6868<p >
6969Which one is referred to?
7070<p />
71- In case <tt >std::nested_exception::rethrow_nested</tt > is called for an object that has
72- captured no exception, there is no throw-expression involved directly (and may no throw
71+ In case <tt >std::nested_exception::rethrow_nested</tt > is called for an object that has
72+ captured no exception, there is no throw-expression involved directly (and may no throw
7373be involved even indirectly).
7474<p />
75- Next, <sref ref =" [terminate.handler]" />, paragraph 2 says
75+ Next, <sref ref =" [terminate.handler]" />, paragraph 2 says
7676</p >
7777<blockquote ><p >
7878<i >Required behavior</i >: A <tt >terminate_handler</tt > shall terminate execution
@@ -84,33 +84,33 @@ exception (because word "return" implies a normal return).
8484<p />
8585One could argue that words "terminate execution of the program" are sufficient,
8686but then why "without returning to the caller" would be mentioned. In
87- case such handler throws, noexcept specification in function <tt >std::terminate</tt >
88- is violated, and <tt >std::terminate</tt > would be called recursively - should
89- <tt >std::abort</tt > not be called in case of recursive <tt >std::terminate</tt >
90- call? On the other hand some controlled recursion could be useful, like in the
87+ case such handler throws, noexcept specification in function <tt >std::terminate</tt >
88+ is violated, and <tt >std::terminate</tt > would be called recursively - should
89+ <tt >std::abort</tt > not be called in case of recursive <tt >std::terminate</tt >
90+ call? On the other hand some controlled recursion could be useful, like in the
9191<a href =" http://cplusplus.co.il/2010/03/21/catching-uncaught-exceptions-within-terminate/" >following technique</a >.
9292</p >
9393</blockquote >
9494
9595<p >
96- The here mentioned wording changes by N3189 in regard to <sref ref =" [terminate]" /> p1
97- were done for a better separation of effects (Effects element) and additional normative
96+ The here mentioned wording changes by N3189 in regard to <sref ref =" [terminate]" /> p1
97+ were done for a better separation of effects (Effects element) and additional normative
9898wording explanations (Remarks element), there was no meaning change intended. Further,
99- there was already a defect existing in the previous wording, which was not updated when
100- further situations where defined, when <tt >std::terminate</tt > where supposed to be
101- called by the implementation.
99+ there was already a defect existing in the previous wording, which was not updated when
100+ further situations where defined, when <tt >std::terminate</tt > where supposed to be
101+ called by the implementation.
102102<p />
103103The part
104104<p />
105105"in effect immediately after evaluating the throw-expression"
106106<p />
107- should be removed and the quoted reference to <sref ref =" [terminate.handler]" />
108- need to be part of the effects element where it refers to the current <tt >terminate_handler</tt >
107+ should be removed and the quoted reference to <sref ref =" [terminate.handler]" />
108+ need to be part of the effects element where it refers to the current <tt >terminate_handler</tt >
109109function, so should be moved just after
110110<p />
111111"Effects: Calls the current <tt >terminate_handler</tt > function."
112112<p />
113- It seems ok to allow a termination handler to exit via an exception, but the
113+ It seems ok to allow a termination handler to exit via an exception, but the
114114suggested idiom should better be replaced by a more simpler one based on
115115evaluating the current exception pointer in the terminate handler, e.g.
116116</p >
0 commit comments