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