On Monday, 8 July 2013 at 15:43:21 UTC, Marco Leise wrote:
Am Thu, 04 Jul 2013 15:54:48 +0200
schrieb "monarch_dodra" <monarchdo...@gmail.com>:
> This should work:
>
> int[] *pSlice = (new int[][1]).ptr;
>
> -Steve
Hum... That would allocate a dynamic array of slices though
right? There'd be the Appendable overhead for just one
element...
No, it allocates a static one-element array of int[]s and then
returns the pointer to the first and only element. It's
similar to wrapping it in a struct. So +1 for that solution.
I don't think that allocates a static array, it's just an
alternative syntax for dynamic array allocation. The fact that
you are extracting a pointer from it and it only has a single
element doesn't mean it is a static array.
//----
void main()
{
int[]* pSlice = (new int[][4]).ptr;
writeln(pSlice[0 .. 4].capacity);
}
//----
This prints 7 for me, which would simply be impossible for new
was allocating a static array.