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

Michael pongad at gmail.com
Thu Jun 28 02:56:32 PDT 2012


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




More information about the Digitalmars-d-learn mailing list