On Wednesday, 17 April 2013 at 12:46:53 UTC, Andrej Mitrovic wrote:
On 4/17/13, Peter Alexander <peter.alexander...@gmail.com> wrote:
Type inference happens if and only if you do
not specify a return type.

That's not true, you still need to use auto. This function definition
is illegal:

x() { return 1; }

You don't need to use auto. Any storage class will do.


As for being able to use 'const' for type inference it's completely an
implementation issue. It's not by design at all. You can even
substitute 'auto' for meaningless crap like this in module scope:

static x() { return 1; }

If return type inference is wanted then 'auto' should be required at all times. What's the point in writing obfuscated code like the above?

Because it's required?

This is illegal:

auto const foo();

If you want type inference then you just need to use:

const foo();

And yes, it is by design. The spec is quite clear on this issue. Type inference is signalled by lack of return type -- not the presence of auto. auto is only required when no other storage class is wanted, to make the parser happy. auto is nothing whatsoever to do with type inference.

Reply via email to