Title
Is the stack unwound when terminate() is called?
Status
nad
Section
[terminate]
Submitter
Detlef Vollmann

Created on 2001-04-11.00:00:00 last changed 171 months ago

Messages

Date: 2010-10-21.18:28:33

Rationale:

There is definitely no contradiction between the core and library clauses; nothing in the core clauses says that stack unwinding happens after terminate is called. 18.7.3.3p2 does not say anything about when terminate() is called; it merely specifies which terminate_handler is used.

Date: 2001-04-11.00:00:00

The standard appears to contradict itself about whether the stack is unwound when the implementation calls terminate().

From 18.7.3.3p2:

Calls the terminate_handler function in effect immediately after evaluating the throw-expression (lib.terminate.handler), if called by the implementation [...]

So the stack is guaranteed not to be unwound.

But from 15.3p9:

[...]whether or not the stack is unwound before this call to terminate() is implementation-defined (except.terminate).

And 15.5.1 actually defines that in most cases the stack is unwound.

History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg2208
2001-04-11 00:00:00admincreate