Joseph Wakeling wrote:
Also try:

foreach(uint i;0..10000) {
   scope Foo f = new Foo(i);
   // Do something with f ...
}

That sometimes doesn't require allocations.

To be sure I understand -- is there anything wrong with writing

     scope auto f = new Foo(i)

... or, in general, using auto to infer the class being initiated?  I found 
myself
disliking the double writing of Foo, although I guess there could be a positive
side to it in ensuring that the class really is what it's meant to be.

You don't have to write 'auto' to get type inference. You just have to have something that signifies to the compiler that a variable is declared. All of these are valid:

   auto x = 123;         // x is int
   const y = 1.23;       // y is const(double)
   static z = "hello";   // z is string
   scope f = new Foo(i); // f is Foo

It is a common belief that 'auto' means automatic type inference. It doesn't. 'auto' is a storage class, the same as in C:

http://publib.boulder.ibm.com/infocenter/macxhelp/topic/com.ibm.vacpp6m.doc/language/ref/clrc03autdef.htm

-Lars

Reply via email to