Different types with auto
Nick Sabalausky
a at a.a
Thu Mar 17 13:35:16 PDT 2011
"bearophile" <bearophileHUGS at lycos.com> wrote in message
news:iltdqr$1rd7$1 at digitalmars.com...
>
> D disallows bug-prone C syntax like this (C style guides strongly suggest
> to declare only each variable in a distinct statement and line of code):
>
> int a = 1, *b = null;
>
> D accepts code like:
>
>> auto a = 1, b = null;
>
> This seems against the D rule of not allowing different types to be
> initialized in the same statement. In my opinion on this design detail D
> is worse than C++0x. As an example, if you write a line of code like this,
> meaning it to initialize six double variables, you have a bug:
>
> auto x1=1., x2=2., x3=3., x4=4., x5=5, x6=6.;
>
I'm not sure how I feel about D's auto creating multiple types in one
statement. But at the very least, I think your code above is yet another
good example of why "1." and ".1" float-literal syntax needs to die, die,
die. It does what? Saves one character just so it can be less readable and
cause syntax problems for new potential features? Bah.
>
> There are only few (one?) other thing(s) that I think C++0x gets better
> than D, like a more strict enum, I don't understand why D doesn't follows
> C++0x design on this other detail:
> http://d.puremagic.com/issues/show_bug.cgi?id=3999
>
I agree that would be nice. Weak typing like that is one of the reasons I
abandoned C/C++, but D still holds on to it in this particular case.
More information about the Digitalmars-d
mailing list