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 4223a3608e4..8c39bbfb901 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 @@ -7792,6 +7792,19 @@ public class AST2TemplateTests extends AST2TestBase { public void testPartialSpecializationForVarargFunctionType_402807() throws Exception { parseAndCheckBindings(); } + + // template + // struct waldo { + // typedef int type; + // }; + // + // template + // struct waldo; + // + // typedef waldo::type Type; + public void testPartialSpecializationForRefQualifiedFunctionType_485888() throws Exception { + parseAndCheckBindings(); + } // template // struct meta { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java index dd07e879f17..36a7b23f41f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java @@ -1013,8 +1013,13 @@ public class TemplateArgumentDeduction { private boolean fromFunctionType(ICPPFunctionType ftp, ICPPFunctionType fta, IASTNode point) throws DOMException { - if (ftp.isConst() != fta.isConst() || ftp.isVolatile() != fta.isVolatile() || ftp.takesVarArgs() != fta.takesVarArgs()) + if (ftp.isConst() != fta.isConst() || + ftp.isVolatile() != fta.isVolatile() || + ftp.takesVarArgs() != fta.takesVarArgs() || + ftp.hasRefQualifier() != fta.hasRefQualifier() || + ftp.isRValueReference() != fta.isRValueReference()) { return false; + } if (!fromType(ftp.getReturnType(), fta.getReturnType(), false, point)) return false;