On Sun, 24 May 2009 20:49:53 -0300, Ary Borenszweig wrote:

> When I compile this code I get "stack overflow" printed in the console.
> Anyone know why?
> 
> ---
> int fact(int X)() {
>       if(X == 0) {
>               return 1;
>       } else {
>               int temp = fact!(X - 1)();
>               return X * temp;
>       }
> }
> 
> const someVar = fact!(0)();
> ---

Because you generate fact!(-1)(), fact!(-2)() and so on at compile time.
You recursive template doesn't terminate.

Reply via email to