Created on 2024-06-16.00:00:00 last changed 3 months ago
Proposed resolution (approved by CWG 2024-06-26):
Change in 13.8.3.4 [temp.dep.constexpr] paragraph 2 as follows:
Expressions of the following form are value-dependent if the unary-expression or expression is type-dependent or the type-id is dependent:sizeof unary-expression sizeof ( type-id ) typeid ( expression ) typeid ( type-id ) alignof ( type-id )noexcept ( expression )
Change in 13.8.3.4 [temp.dep.constexpr] paragraph 3 as follows:
Expressions of the following form are value-dependent if either the type-idor, simple-type-specifier, or typename-specifier is dependent or the expression or cast-expression is value-dependent:simple-type-specifier ( expression-listopt ) typename-specifier ( expression-listopt ) simple-type-specifier braced-init-list typename-specifier braced-init-list static_cast < type-id > ( expression ) const_cast < type-id > ( expression ) reinterpret_cast < type-id > ( expression ) dynamic_cast < type-id > ( expression ) ( type-id ) cast-expression
Add a new paragraph before 13.8.3.4 [temp.dep.constexpr] paragraph 5 as follows:
A noexcept-expression (7.6.2.7 [expr.unary.noexcept]) is value-dependent if its expression involves a template parameter.
An expression of the form &qualified-id where ...
(From submission #554.)
The following examples of noexcept-expressions are not specified to be value-dependent, but ought to be, because value-initialization of T might throw an exception.
template<typename T> void f() { noexcept(static_cast<int>(T{})); noexcept(typeid(*T{})); noexcept(delete T{}); }
History | |||
---|---|---|---|
Date | User | Action | Args |
2024-06-27 04:48:19 | admin | set | messages: + msg7760 |
2024-06-27 04:48:19 | admin | set | status: open -> tentatively ready |
2024-06-16 00:00:00 | admin | create |