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 8c39bbfb901..dd8987d31eb 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 @@ -8709,6 +8709,32 @@ public class AST2TemplateTests extends AST2TestBase { BindingAssertionHelper helper = getAssertionHelper(); helper.assertNonProblem("waldo", ICPPDeferredFunction.class); } + + // template + // struct enable_if {}; + // + // template + // struct enable_if { + // typedef T type; + // }; + // + // template + // constexpr bool F() { + // return false; + // } + // + // template + // typename enable_if(), void>::type waldo(T p); // problem on the return type + // + // struct A {}; + // + // void test() { + // A a; + // waldo(a); // problem on waldo + // } + public void testDependentFunctionSet_485985() throws Exception { + parseAndCheckBindings(); + } // template // struct C { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java index 5ac947ff012..fa92e152cee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java @@ -132,7 +132,9 @@ public class EvalFunctionSet extends CPPDependentEvaluation { @Override public boolean isValueDependent() { - return false; + // The value of the function set (which function it resolves to) is + // dependent under the same circumstances when its type is dependent. + return isTypeDependent(); } @Override