diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java index 30995a2f98c..61fbe3d5720 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java @@ -695,7 +695,8 @@ public class CPPSemantics { if( data.astName instanceof ICPPASTTemplateId && cls instanceof ICPPInternalTemplate ){ ICPPASTTemplateId id = (ICPPASTTemplateId) data.astName; IType [] args = CPPTemplates.createTypeArray( id.getTemplateArguments() ); - cls = (ICPPClassType) ((ICPPInternalTemplate)cls).instantiate( args ); + IBinding inst = ((ICPPInternalTemplate)cls).instantiate( args ); + cls = inst instanceof ICPPClassType ? (ICPPClassType)inst : cls; } if( cls != null ){ try {