Good I know I spotted something _real_ this time!

On Wednesday, 27 June 2012 at 11:55:11 UTC, Timon Gehr wrote:
On 06/27/2012 01:24 PM, Timon Gehr wrote:
On 06/27/2012 11:07 AM, Michael wrote:
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?


Apparently the compiler attempts to type combine the types of the return statements. This does not match the language documentation. I think it should just use the type of the first return statement.
...

http://d.puremagic.com/issues/show_bug.cgi?id=8307


Reply via email to