Subject: Re: [boost] The noexcept Specifier & Block
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2009-04-17 11:05:16
Stefan Seefeld wrote:
> Alexander Terekhov wrote:
> > Gabriel Dos Reis wrote:
> >> On Thu, Apr 16, 2009 at 7:11 PM, Alexander Terekhov <terekhov_at_[hidden]> wrote:
> >>> Scott McMurray wrote:
> >>> [...]
> >>>> I don't see how you're going to get the "at throw point" you're asking for.
> >>> Two-phase EH.
> >> An implementation strategy used by some compilers. It is not
> >> something required by C++. It is mysterious why some popular
> >> compilers insist on using that strategy when they know they are
> >> dealing with C++ applications.
> > Because that strategy allows to not unwind the stack for unexpected
> > exceptions.
> Can you elaborate on that a little ? 15.5.2/1 says
> "If a function with an exception-specification throws an exception that
> is not listed in the exception-specification, the function void
> unexpected(); is called (18.6.2) immediately after completing the stack
> unwinding for the former function."
> So, stack unwinding certainly has to happen, from the call site down to
> the point where the exception is not allowed to pass.
That's only if you use exception-specifications.
> Am I missing something ?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk