From Jason Turner

[except.ctor]

Diff to HTML by rtfpessoa

tmp/tmpiy79la82/{from.md → to.md} RENAMED
@@ -1,11 +1,11 @@
1
  ## Constructors and destructors <a id="except.ctor">[[except.ctor]]</a>
2
 
3
- As control passes from a *throw-expression* to a handler, destructors
4
- are invoked for all automatic objects constructed since the try block
5
- was entered. The automatic objects are destroyed in the reverse order of
6
- the completion of their construction.
7
 
8
  An object of any storage duration whose initialization or destruction is
9
  terminated by an exception will have destructors executed for all of its
10
  fully constructed subobjects (excluding the variant members of a
11
  union-like class), that is, for subobjects for which the principal
@@ -17,11 +17,11 @@ destructor will be invoked. If the object was allocated in a
17
  *new-expression*, the matching deallocation function (
18
  [[basic.stc.dynamic.deallocation]], [[expr.new]], [[class.free]]), if
19
  any, is called to free the storage occupied by the object.
20
 
21
  The process of calling destructors for automatic objects constructed on
22
- the path from a try block to a *throw-expression* is called “*stack
23
- unwinding*.” If a destructor called during stack unwinding exits with an
24
- exception, `std::terminate` is called ([[except.terminate]]). So
25
- destructors should generally catch exceptions and not let them propagate
26
- out of the destructor.
27
 
 
1
  ## Constructors and destructors <a id="except.ctor">[[except.ctor]]</a>
2
 
3
+ As control passes from the point where an exception is thrown to a
4
+ handler, destructors are invoked for all automatic objects constructed
5
+ since the try block was entered. The automatic objects are destroyed in
6
+ the reverse order of the completion of their construction.
7
 
8
  An object of any storage duration whose initialization or destruction is
9
  terminated by an exception will have destructors executed for all of its
10
  fully constructed subobjects (excluding the variant members of a
11
  union-like class), that is, for subobjects for which the principal
 
17
  *new-expression*, the matching deallocation function (
18
  [[basic.stc.dynamic.deallocation]], [[expr.new]], [[class.free]]), if
19
  any, is called to free the storage occupied by the object.
20
 
21
  The process of calling destructors for automatic objects constructed on
22
+ the path from a try block to the point where an exception is thrown is
23
+ called “*stack unwinding*.” If a destructor called during stack
24
+ unwinding exits with an exception, `std::terminate` is called (
25
+ [[except.terminate]]). So destructors should generally catch exceptions
26
+ and not let them propagate out of the destructor.
27