1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-30 21:55:31 +02:00

Fix argument deduction, example 14.8.2.4-14, related to bug 256113.

This commit is contained in:
Markus Schorn 2008-11-28 16:33:26 +00:00
parent 45f3fe8e97
commit 57ed777b6c
4 changed files with 25 additions and 22 deletions

View file

@ -73,19 +73,4 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest {
public void _test14_8_2_4s8() throws Exception {
parse(getAboveComment(), ParserLanguage.CPP, true, 0);
}
// template<int i, typename T>
// T deduce(typename A<T>::X x, // T is not deduced here
// T t, // but T is deduced here
// typename B<i>::Y y); // i is not deduced here
// A<int> a;
// B<77> b;
// int x = deduce<77>(a.xm, 62, y.ym);
// // T is deduced to be int, a.xm must be convertible to
// // A<int>::X
// // i is explicitly specified to be 77, y.ym must be convertible
// // to B<77>::Y
public void _test14_8_2_4s14() throws Exception {
parse(getAboveComment(), ParserLanguage.CPP, true, 0);
}
}

View file

@ -5667,6 +5667,29 @@ public class AST2CPPSpecTest extends AST2SpecBaseTest {
parse(getAboveComment(), ParserLanguage.CPP, false, 0);
}
// template<typename T> class A {
// public:
// typedef int X;
// X xm;
// };
// template<int I> class B {
// public:
// typedef int* Y;
// Y ym;
// };
// template<int i, typename T>
// T deduce(typename A<T>::X x, // T is not deduced here
// T t, // but T is deduced here
// typename B<i>::Y y); // i is not deduced here
// void test() {
// A<int> a;
// B<77> b;
// deduce<77> (a.xm, 62, b.ym);
// }
public void test14_8_2_4s14() throws Exception {
parse(getAboveComment(), ParserLanguage.CPP, true, 0);
}
// template<int i> class A { /* ... */ };
// template<short s> void f(A<s>);
// void k1() {

View file

@ -348,12 +348,7 @@ public class IndexCBindingResolutionTest extends IndexBindingResolutionTestBase
IBinding b10 = getBindingFromASTName("foo1/*k*/", 4);
IBinding b10a = getBindingFromASTName("sp);/*9*/ ", 2);
}
public void _testEnumeratorInFileScope() {fail("todo");}
public void _testEnumeratorInStructScope() {fail("todo");}
public void _testEnumeratorInUnionScope() {fail("todo");}
public void _testMemberAccess() {fail("todo");}
// // header file
// struct myStruct {
// int a;

View file

@ -648,7 +648,7 @@ public class CPPTemplates {
return null;
// mstodo- instantiate values correctly
int parPos= Value.isTemplateParameter(value);
if (parPos > 0) {
if (parPos >= 0) {
ICPPTemplateArgument arg = tpMap.getArgument(parPos);
if (arg != null) {
IValue mappedValue = arg.getNonTypeValue();