Three Unlikely Successful Features of D

Don Clugston dac at nospam.com
Wed Mar 21 08:21:25 PDT 2012


On 21/03/12 03:47, Walter Bright wrote:
> On 3/20/2012 4:39 PM, H. S. Teoh wrote:
>> On Tue, Mar 20, 2012 at 06:58:31PM -0400, Nick Sabalausky wrote:
>>> - Type inference
>>
>> Yeah I forgot about this one. Being able to write:
>>
>> auto veryLongNamedObject = new VeryLongNamedClass(veryLongArguments);
>>
>> is a big boon over C++ or Java's stuttering verbosity:
>>
>> VeryLongNamedClass veryLongNamedObject = new
>> VeryLongNamedClass(veryLongArguments);
>>
>> Plus, it's immensely useful when dealing with Range templates... can you
>> imagine the horrifically long typenames you'd have to type you have to
>> explicitly specify the type of a long chain of functional expressions
>> involving 15+ std.algorithm and std.range templates?
>
> Andrei discovered an amazing use of auto. It enables you to create
> variables with voldemort types "that may not be named".
>
> For example:
>
> auto foo()
> {
> struct S { ... }
> S s;
> return s;
> }
>
> auto x = foo();
>
> And now x is an instance of a voldemort type! It's completely encapsulated.

That idiom is already built into the language. Anonymous nested classes 
don't have a name at all.

auto x = new class {  ... }



More information about the Digitalmars-d mailing list