On Wed, 14 Jan 2015 22:29:08 +0000
bearophile via Digitalmars-d <[email protected]> wrote:

> According to Wikipedia:
> http://en.wikipedia.org/wiki/C%2B%2B14#Function_return_type_deduction
> 
> C++14 is able to compile code like this:
> 
> 
> auto correct(int i) {
>      if (i == 1)
>          return i;
>      else
>          return correct(i - 1) + i;
> }
> 
> 
> But not like this:
> 
> auto correct(int i) {
>      if (i != 1)
>          return correct(i - 1) + i;
>      else
>          return i;
> }
> 
> 
> D isn't able to compile both. Is it a good idea to allow the 
> first function in D too?
> 
> Bye,
> bearophile
i'm pretty sure that D *SHOULD* compile the first sample. the spec says
that return type for `auto` function is taken from the first `return`
operator parser met. so for the second `return` the return type is
already known.

i think that this is not just "let it compile", but a bug in compiler.
something should be fixed: either compiler or specs.

Attachment: signature.asc
Description: PGP signature

Reply via email to