This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 116a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-12-19
[Accepted as a DR at the November, 2022 meeting.]
The rule in 13.10.3.4 [temp.deduct.conv] bullet 5.2 seems to allow
template<class T,bool B> using get=T(*)() noexcept(B); struct A { template<class T> operator get<T,false>() const; }; auto *p=A().operator get<int,true>();
Proposed resolution (approved by CWG 2022-11-09):
Change in 13.10.3.4 [temp.deduct.conv] paragraph 1 as follows:
... If the conversion-function-id is constructed during overload resolution ([over.match.funcs]), thefollowing transformationsrules in the remainder of this subclause apply.
Change in 13.10.3.4 [temp.deduct.conv] bullet 5.2 as follows:
However, certain attributes of A may be ignored:
- ...
- If the original A is a function pointer or pointer-to-member-function type with a potentially-throwing exception specification (14.5 [except.spec]),
its noexceptthe exception specification.- ...