Description
Full name of submitter: Brian Bi
Reference (section label): [except.throw]
Issue description: As pointed out by user 0x5f3759df on Stack Overflow, the normative wording in [expr.throw] and [except.throw] respectively specify the type of the exception object and the fact that the exception object is copy-initialized, but do not appear to specify that the exception object is copy-initialized from the assignment-expression operand.
Suggested resolution: Edit [except.throw]/3:
Throwing an exceptionA throw-expression ([expr.throw]) with an operand copy-initializes (9.4, 11.4.5.3) a temporary object, called the exception object, from its operand. If the type of the exception object would be an incomplete type, an abstract class type (11.7.4), or a pointer to an incomplete type other than cvvoid
the program is ill-formed.