monarch_dodra:

I mean structs you can pack together in an array, eg:

S[10] s10; //10 structs S

You can't do that with classes. Sure, you can put 10 class *references* in an array, but the *instances* themselves need to be individually allocated.

This kind of works, with some limitations (I'll ask to remove one limitation):


import std.stdio, std.conv, std.typecons;

class Foo {
    int x;
    this(int x_) { this.x = x_; }
    override string toString() { return text(x); }
}

void main() {
    // scoped!Foo[10] foos;
    typeof(scoped!Foo(1))[10] foos; // Not initialized.

    foreach (i, ref f; foos)
        // f = new Foo(i * 10);
        // f = scoped!Foo(i * 10);
        f.x = i * 10;

    // writeln(foos);
    foreach (ref f; foos)
        writeln(f.x);
}


Bye,
bearophile

Reply via email to