D - DMD compiler does not like template recursion
- Roel Mathys (55/55) Jan 17 2004 I tried to calculate the factorial of an integer with templates,
I tried to calculate the factorial of an integer with templates,
the D compiler did not like it.
Is recursion not allowed in D templates?
bye,
roel
// -------------------------------------------------------
// first attempt: with specialisation it would not compile
template factor(int n)
{
int value()
{
if (n==0 || n==1) return 1;
return n * factor!(n-1).value();
}
}
template factor(int n : 0)
{
int value()
{
return 1;
}
}
template factor(int n : 1)
{
int value()
{
return 1;
}
}
int main()
{
printf( "%d\n"
, factor!(4).value()
);
return 0;
}
// -------------------------------------------------------
// second attempt: testing for end condition
// => going ballistic
// => bug in compiler
template factor(int n)
{
int value()
{
if (n==0 || n==1) return 1;
return n * factor!(n-1).value();
}
}
int main()
{
printf( "%d\n"
, factor!(4).value()
);
return 0;
}
Jan 17 2004








Roel Mathys <roel.mathys yucom.be>