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 possible and a good idea to allow the first function in D too? The D spec says: "If multiple return expressions are used in the function's implementation, then they must all deduce the same type."
*** This issue has been marked as a duplicate of issue 5288 ***