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.