Why do I get stack overflow?
Ary Borenszweig
ary at esperanto.org.ar
Sun May 24 21:09:54 PDT 2009
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.
More information about the Digitalmars-d-learn
mailing list