diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index 494d514fca7..e38758bd93f 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -4441,6 +4441,17 @@ public class AST2TemplateTests extends AST2BaseTest { assertFalse(tp.isParameterPack()); } + // template struct CTx {}; + // void test() { + // CTx<> a; + // CTx<1> b; + // CTx<1,2> c; + // } + public void testNonTypeTemplateParameterPack_280909() throws Exception { + final String code= getAboveComment(); + parseAndCheckBindings(code, ParserLanguage.CPP); + } + // template // struct count { static const int value = sizeof...(Types); // }; 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 1b6cbc8cf30..96e4c3e7433 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 @@ -1889,6 +1889,9 @@ public class CPPTemplates { IType argType= arg.getTypeOfNonTypeValue(); try { IType pType = ((ICPPTemplateNonTypeParameter) param).getType(); + if (pType instanceof ICPPParameterPackType) { + pType= ((ICPPParameterPackType) pType).getType(); + } if (map != null && pType != null) { pType= instantiateType(pType, map, -1, null); }