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