<div dir="ltr">So I'm looking at fixing this in Clang and after my naive approach failed I finally think I understand the issue at hand.<div><br></div><div>When checking the explicit specialization Clang makes an implicit instantiation of the primary template. This happens inside the call to DeduceTemplateArguments. Existing declaration of the explicit template is then marked as a redeclaration of the newly created implicit instantiation.</div><div><br></div><div>Interestingly the implicit instantiation is marked as deleted (because the primary template is) but the actual explicit specialization isn't.</div><div><br></div><div>I came across David's fixme comment that mentions how we shouldn't be creating these implicit instantiations. So my question would be what's the right way to fix this? Not creating them at all, removing them at some point, replacing them with the actual explicit specialization or just trying to detect this pattern. Not creating them sounds best to me but I'm really lost as to how to achieve this. Help :)</div><div><br></div><div>Nikola</div></div>