Bug in Auto Functions and Template? Or Am I Just Crazy...
    Michael 
    pongad at gmail.com
       
    Wed Jun 27 02:07:56 PDT 2012
    
    
  
Hello all,
   I came across some weird behaviors yesterday and I can't figure 
out what it's about.
(1)
auto factorial(int n) {
	if (n < 2) return 1;
	return n * factorial(n-1);
}
The compiler complained about "forward declaration of factorial". 
If I change the return type to int, the problem goes away. I can 
understand that with the recursion, it might be impossible for 
the compiler to deduce the type of factorial and so it compile 
errors, but I don't see anything about that on the Language 
Reference. Is this the intended behavior?
(2)
auto stuff(T)(T[] arr) {
	auto inner(T[] s) {
		s[0] = 0;
	}
	arr.inner();
}
This time the compiler complained about 'inner' not being 
defined. This time I have no idea what is wrong.
Thanks for your help!
Michael
    
    
More information about the Digitalmars-d-learn
mailing list