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 {  ... }

Reply via email to