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
|
| 4 |
-
are invoked for all automatic objects constructed
|
| 5 |
-
was entered. The automatic objects are destroyed in
|
| 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
|
| 23 |
-
unwinding*.” If a destructor called during stack
|
| 24 |
-
exception, `std::terminate` is called (
|
| 25 |
-
destructors should generally catch exceptions
|
| 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 |
|