On Sunday, 3 February 2013 at 00:34:48 UTC, Namespace wrote:
On Saturday, 2 February 2013 at 22:39:58 UTC, monarch_dodra
wrote:
On Saturday, 2 February 2013 at 22:15:56 UTC, Namespace wrote:
My real question was: will we ever have fixed size arrays at
runtime?
I see no reason why we couldn't, the only problem is a syntax
one. If you beat the syntax (by wrapping it in a struct) then
you can do it no problem:
//----
T[N]* makeFixed(size_t N, T)()
{
static struct Fixed
{
T[N] a;
}
auto p = new Fixed();
return &((*p).a);
}
void main()
{
int[4]* p4 = makeFixed!(4, int)();
}
//----
And there, a dynamically allocated fixed size array. I know
it's not pretty, but it proves the point.
Sure and as I said: something like that I'm using currently. It
is very ugly and because of that I asked for a built in
solution, like new ubyte[size].
[SNIP]
But as far as I can see all your are fine with the wrapped
struct solution.
I never said I was happy with this solution! The problem is that
the old "new int[4]" syntax is already taken and means "allocate
a dynamic array of size 4".
C have also runtime fixed size arrays.
C has "variable length arrays". That's not exactly the same same
thing as allocating a fixed size array at runtime (apologies if I
was confused by your requirement).
If you want variable length arrays, you should be able to do it
with the low level "alloca".