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 42f44691804..440004c08be 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 @@ -7226,6 +7226,20 @@ public class AST2TemplateTests extends AST2TestBase { public void testAliasTemplate_416280_2() throws Exception { parseAndCheckBindings(); } + + // template + // struct Struct {}; + // + // template using Alias = Struct; + // + // void waldo(Struct); + // + // int main() { + // waldo(Alias()); + // } + public void testTemplateIdNamingAliasTemplateInExpression_472615() throws Exception { + parseAndCheckBindings(); + } // template // struct A { 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 7db462451aa..00098cb8ddf 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 @@ -667,7 +667,7 @@ public class CPPTemplates { // Functions are instantiated as part of the resolution process. IBinding result= CPPVisitor.createBinding(id); IASTName templateName = id.getTemplateName(); - if (result instanceof ICPPClassTemplate) { + if (result instanceof ICPPClassTemplate || result instanceof ICPPAliasTemplate) { templateName.setBinding(result); id.setBinding(null); } else {