'auto' keyword

Ali Çehreli acehreli at yahoo.com
Sun Mar 12 19:18:42 UTC 2023


On 3/12/23 06:07, DLearner wrote:

 > 1. As a shorthand to make the type of the variable being declared the
 > same as the type on the right hand side of an initial assignment.

As Adam explained, D already has type inference without a special keyword.

However, some places where 'auto' (or 'const', etc.) appear is not only 
for "shorthand" but for necessity.

Some types cannot be spelled-out at all:

auto foo() {
     struct S {}
     return S();
}

void main() {
     pragma(msg, typeof(foo()));
     auto s = foo();
}

The name 'S' is available only inside 'foo', so code outside has no 
choice but to use 'auto' (or 'const', etc.)

Having said that, it is still possible to alias the returned type, which 
may be cumbersome in some cases because you may have to come up with a 
clean expression for attempting to call the function. In this case it's 
trivial because foo does not take any parameter:

     alias T = typeof(foo());
     T t;    // <-- There: I did not need to use 'auto'

Ali



More information about the Digitalmars-d-learn mailing list