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 3f28823187d..c3f89c9e384 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,7 +7226,27 @@ public class AST2TemplateTests extends AST2TestBase { public void testAliasTemplate_416280_2() throws Exception { parseAndCheckBindings(); } - + + // struct A { + // static constexpr bool val = true; + // }; + // + // struct C { + // template + // using AC = A; + // }; + // + // template + // struct D { + // template + // struct AD : T::template AC {}; + // }; + // + // bool b = D::template AD::val; + public void testAliasTemplate_486618() throws Exception { + parseAndCheckBindings(); + } + // template // struct Struct {}; // 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 6d434044bcd..add14215af3 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 @@ -2844,6 +2844,11 @@ public class CPPTemplates { if (unknown instanceof ICPPUnknownMemberClassInstance && result instanceof ICPPTemplateDefinition) { ICPPTemplateArgument[] args1 = instantiateArguments( ((ICPPUnknownMemberClassInstance) unknown).getArguments(), tpMap, packOffset, within, point, false); + if (result instanceof ICPPAliasTemplate) { + IType aliasedType = ((ICPPAliasTemplate) result).getType(); + if (aliasedType instanceof IBinding) + result = (IBinding) aliasedType; + } if (result instanceof ICPPClassTemplate) { result = instantiate((ICPPClassTemplate) result, args1, point); }