On 11 December 2013 15:41, Howard Hinnant <[email protected]> wrote:
> On Dec 9, 2013, at 4:42 PM, Mark Seaborn <[email protected]> wrote: > > Hi howard.hinnant, > > > > Fix std::uncaught_exception() to return true during exception > initialization > > > > std::uncaught_exception() should return true during the call to the > > copy constructor that "throw X" does to initialize the exception > > object after the expression X has been evaluated (or during the call > > to the normal constructor if the compiler has done copy elision). > > It appears to me that that CWG 475 ( > http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#475) decided > in April 2006 the opposite direction of the fix made to gcc implemented a > year earlier. > > The current draft retains the wording from CWG 475 (15.5.3/p1): > > > The function std::uncaught_exception() returns true *after* completing > the initialization of the exception object... > > (I added the emphasis) > > The current output of your test on OS X: > > std::uncaught_exception()=0 > > appears to me to be the standard conforming output. OK, that makes sense. Particularly since an exception that occurs in the throw's call to the copy constructor is catchable, unlike an exception that occurs in a catch's call to a copy constructor. The intention seems to be that std::uncaught_exception() returns true in contexts where any exception would be uncatchable by an outer "try" block. Thanks for checking. I'll close the issue (PR18193). Cheers, Mark
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
