On Sun, 25 Mar 2012, Jason Merrill wrote:
As I mentioned in my patch to add -std=c++1y, I've been working on a proposal
for the next standard to support return type deduction for normal functions,
not just lambdas. This patch implements that proposal.
Nice. I like the way you seem to be going for the basic, uncontroversial
version (extensions can always be discussed later), instead of trying to
figure out something universal.
If I understand correctly, you pick the first return statement for type
deduction, and other returns (if any) are only checked afterwards for
exact consistency, which simplifies the problem quite a bit while still
allowing some recursion (although interestingly, constexpr functions
require the use of a single return with ?: whereas your auto functions
prefer an if and several returns). Naturally, auto functions have to be
instantiated a bit more eagerly than regular functions, and there is no
try to sfinae the auto deduction. That seems to fit many simple functions
quite nicely with little room for unintended consequences.
I tried to send this message before with the proposal attached in HTML, but
the mailing list rejects HTML attachments, so I've dropped it. I'm happy to
send it separately to anyone interested.
I guess I'll have plenty of chances to look at it once it is submitted
(it isn't like I'd have much to contribute...).