Code behaves incorrectly if it is compiled in std.functional
Mafi via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jun 5 08:17:50 PDT 2015
On Friday, 5 June 2015 at 12:33:35 UTC, ketmar wrote:
> On Fri, 05 Jun 2015 11:53:29 +0000, Marc Schütz wrote:
>
>> My understanding is that `auto` is just C legacy, and
>> originally had the
>> same meaning as in C. But apparently the language has moved
>> away from
>> that over time.
>
> i agree, i think it was a keyword used 'cause it was already
> used in C.
> but it's meaning is completely redefined in D.
AFAIK auto is a stotage class (like in C). It is the no-op
storage and therefore does not not change the stotage or type
etc. But in a statement it definitely marks as a declaration
because only those can contain storage classes. In D any
declaration can omit the type so let it be inferred. That's why
this also works:
const x = 10;
static y = 20;
enum z = 30;
Auto is only needed to unambigiously mark a statement as
declaration when the lack of type would make it look like an
ExpressionStatement. But still
auto int x = 10;
should work. It's just consistent.
More information about the Digitalmars-d
mailing list