Moritz Warning escribió:
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.
Thanks. Later in my head I instantiated the template and noticed the
problem.