This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 120a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2026-06-10
(From submission #852.)
Consider:
class A {
protected:
void f();
};
struct B : A {
static constexpr auto r = ^^A::f;
};
Do the restrictions in 11.8.5 [class.protected] on the use of expression &A::f apply to the reflect-expression?
Suggested resolution [SUPERSEDED]:
Change in 7.6.2.10 [expr.reflect] bullet 7.2 as follows:
A reflect-expression R of the form ^^id-expression represents an entity determined as follows:
- ...
- Otherwise, if the id-expression denotes an overload set S,
overload resolution for the expression &S with no target shall select a unique function (12.3 [over.over])the expression &id-expression shall be well-formed when considered as an unevaluated operand; R representsthatthe function selected by overload resolution (12.3 [over.over]).
CWG 2026-05-08
Reflection supports deleted functions, but the phrasing above does not.
Proposed resolution (approved by CWG 2026-05-19):
Change in 7.6.2.10 [expr.reflect] bullet 7.2 as follows:
A reflect-expression R of the form ^^id-expression represents an entity determined as follows:
- ...
- Otherwise, if the id-expression denotes an overload set S,
overload resolution for the expression &S with no target shall select a unique function (12.3 [over.over])the expression &id-expression shall be well-formed when considered as an unevaluated operand, except that the function F selected as described in 12.3 [over.over] may be deleted (9.6.3 [dcl.fct.def.delete]); R representsthat functionF .