Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
index db5016d71d1..4653d563505 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
@@ -1182,6 +1182,45 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa
assertEquals("int", ASTTypeUtil.getType(type));
}
+ // template <typename T>
+ // struct D;
+ //
+ // template <typename C, typename U>
+ // struct D<void (C::*)(U)> {
+ // typedef U type;
+ // };
+ //
+ // template <typename T>
+ // using E = typename D<decltype(&T::operator())>::type;
+ //
+ // template <typename T>
+ // struct G {
+ // typedef E<T> type;
+ // };
+ //
+ // template <typename T>
+ // using F = typename G<T>::type;
+ //
+ // template <typename T, typename U>
+ // struct B {};
+ //
+ // template <typename T>
+ // B<F<T>, int>* f(T t);
+ //
+ // template <typename U>
+ // void waldo(B<double, U>* e);
+
+ // struct A {
+ // void operator()(double x);
+ // };
+ //
+ // void test() {
+ // waldo(f(A()));
+ // }
+ public void testTemplateArgumentDeduction_507511() throws Exception {
+ checkBindings();
+ }
+
// class A {}; class B {}; class X {};
// template<typename T>
// class C {

Back to the top