easier way?

bearophile bearophileHUGS at lycos.com
Wed Aug 25 18:44:33 PDT 2010


Jason Spencer:
> Do you mean just the number of dimensions, or do you mean the size
> along each dimension?

I mean just the number of dimensions.


>  Knowing just the # of dimensions won't tell me
> the total size or how to index.  I need the size of each dimension.

If you need that information at compile-time then it's better to just use nD fixed-sized arrays. There is not much need to create an array struct for this purpose.


> That's a copy from heap to stack, isn't it?

Right. (and that code isn't fully syntactically correct, you need to use [] when you copy array contents).


> That's what I'm trying to avoid.<

D doesn't support fixed-sized arrays allocated on the heap, to do that you need to wrap them inside a struct (with no waste of extra memory):

struct Foo(int N) {
    int[N] arr;
}
void main() {
    Foo!5* f = new Foo!(5)();
    static assert((Foo!(5)).sizeof == 5 * int.sizeof);
}

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list