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

Reply via email to