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.

Reply via email to