[cfe-dev] DR941

Nikola Smiljanic via cfe-dev cfe-dev at lists.llvm.org
Mon Dec 21 18:50:42 PST 2015

So I'm looking at fixing this in Clang and after my naive approach failed I
finally think I understand the issue at hand.

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.

Interestingly the implicit instantiation is marked as deleted (because the
primary template is) but the actual explicit specialization isn't.

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 :)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151222/1e3d80e1/attachment.html>

More information about the cfe-dev mailing list