array depth template
Saaa
empty at needmail.com
Thu Jun 11 21:24:14 PDT 2009
>
> Your template. Types are not values, you cannot declare a constant
> that is a type. You have to use alias instead:
>
> template BaseType(T: T[]) { alias BaseType!(T) BaseType; }
> template BaseType(T) { alias T BaseType; }
Erm, why did this print corretly?
writefln(`BaseType = `, BaseType!(T).stringof );
btw. Thanks for everything !!
It's nice to get some comments after a fews days of struggling with them
templates :)
I can now parse any numeric type (array) till depth 4; still haven't found a
way to generalize this part :(
private void Parse(T)(ref T parsed)
{
..
switch( depth )
{
case 0:
if( temp.length < index[depth] ) temp.length = temp.length * 2;
break;
static if( is(T A:A[][]))
{
case 1:
if( temp[ index[0] ].length < index[depth] ) temp[index[0]].length =
temp[index[0]].length * 2;
break;
}
static if( is(T A:A[][][]))
{
case 2:
if( temp[ index[0] ][ index[1] ].length < index[depth] ) temp[ index[0] ][
index[1] ].length = temp[ index[0] ][ index[1] ].length * 2;
break;
}
default:
assert(false);
break;
}
..
}
More information about the Digitalmars-d-learn
mailing list