Bug in Auto Functions and Template? Or Am I Just Crazy...

Timon Gehr timon.gehr at gmx.ch
Wed Jun 27 04:55:10 PDT 2012


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


More information about the Digitalmars-d-learn mailing list