On 12/19/17 9:35 AM, ketmar wrote:
Steven Schveighoffer wrote:

I insist that auto is a storage qualifier

what is the rationale to have `auto` as storage qualifier? except of keeping it in line with the ancient C feature (and most C programmers don't even know what `auto` does in C).

Because it's consistent. D says that types are inferred when the type is missing and there is a storage class specified. Making auto a storage class fits this definitely perfectly.


i bet that most people are sure that `auto` in D is a type placeholder. it works like type placeholder, it looks like type placeholder, why don't make it a type placeholder?

It could be specified that way, but then it's another thing to explain, which doesn't add any value. The spec can read "The type of a variable is inferred from the initializer if you specify a storage class" or it can read "The type of a variable is inferred from the initializer if you specify a storage class, or if you use 'auto' as the type placeholder." I don't see a gain there.

ok, i can see *one* place where it won't be consistent: `foo (auto ref Type v)`. which can be left as a logical exception ('cmon, `enum a = 20;`) is not declaring an enum too, it is used to declare "inline constant".

auto ref, while a nice feature, is a horrible syntax. It's an exception no matter what we do!


also:

     auto int n = 42;

yay: "Error: variable n storage class 'auto' has no effect if type is not inferred, did you mean 'scope'?" > even D compiler knows that `auto` is used as *type* *placeholder*. 'cmon, let's promote it to actual type placeholder!

Another inconsistency that should be fixed (and allowed).

-Steve

Reply via email to