Movatterモバイル変換


[0]ホーム

URL:


This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-12-20


210. What is the type matched by an exception handler?

Section:14.4  [except.handle]    Status:TC1    Submitter:Scott Douglass    Date:6 Mar 2000

14.4 [except.handle] paragraph 3 says,

Ahandler is a match for athrow-expression with anobject of typeE...

This wording leaves it unclear whether it is the dynamic type of theobject being thrown or the static type of the expression thatdetermines whether a handler is a match for a given exception. Forinstance,

    struct B { B(); virtual ~B(); };    struct D : B { D(); };    void toss(const B* b) { throw *b; }    void f() { const D d; toss(&d); }

In this code, presumably the type to be matched isB and notconst D (14.2 [except.throw]).

Suggested resolution: Replace the cited wording as follows:

Ahandler is a match for athrow-expression whichinitialized a temporary (14.2 [except.throw]) of typeE...

Proposed resolution (10/00):

  1. Change 14.2 [except.throw] paragraph 3 from

    Athrow-expression initializes a temporary object, the type ofwhich is determined...

    to

    Athrow-expression initializes a temporary object, called theexception object, the type of which is determined...
  2. Change 14.4 [except.handle] paragraph 3 from

    Ahandler is a match for athrow-expression with anobject of typeE if...

    to

    Ahandler is a match for an exception object of typeEif...



[8]ページ先頭

©2009-2026 Movatter.jp