On Saturday, 7 December 2013 at 23:21:05 UTC, Adam D. Ruppe wrote:
On Saturday, 7 December 2013 at 22:32:59 UTC, Namespace wrote:
Since D doesn't offer VLA's and alloca is broken (besides the ugly syntax),
I use a scoped wrapper (since scope doesn't do the job):

I like to use a helper template that defines a static array with a typical size. Then, if the runtime requirement is less than that, it can simply slice into the static array, and if not, then do the alloc/free pair.

You mean something like that?

----
struct Helper(T, uint StackSize = 128) {
        static T[StackSize] buffer = void;

        static T[] opCall(size_t n) {
                if (n <= StackSize)
                        return buffer[0 .. n];

                return new T[n];
        }
}

void main() {
        int[] arr = Helper!int(512);
}
----

Reply via email to