diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java index 485a45f6707..889c9101972 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java @@ -461,7 +461,7 @@ public class CPPTemplates { ICPPTemplateInstance result = ((ICPPInstanceCache) template).getInstance(args); if (forDefinition && result instanceof IIndexBinding) return null; - if (result != null) { + if (result != null && !result.isExplicitSpecialization()) { // Don't use the cached instance if its argument is an index type and the requested // argument is an AST type. Despite identical signatures the types may be different. ICPPTemplateArgument[] instanceArgs = result.getTemplateArguments();