digitalmars.D.bugs - zero size static array behaviour "incongruous"
- Regan Heath (21/21) Jul 20 2005 The behaviour of static and dynamic arrays is inconsistent here:
- Regan Heath (4/25) Jul 20 2005 I suspect the solution is to cause "new int[0]" to allocate a zero lengt...
The behaviour of static and dynamic arrays is inconsistent here:
import std.stdio;
void main()
{
int[0] s;
int[ ] p = new int[0];
writefln("%d %x",p.length,p.ptr);
writefln("%d %x",s.length,s.ptr);
}
[Output]
0 0
0 12ff28
I would suggest that "int[0] s;" be an error, as it's pretty meaningless..
Except template programmers would likely be a little annoyed with that.
I would suggest that "int[0] s;" have a null data pointer (as the dynamic
one does), but I believe they're implemented in such a way that there is
no such data pointer.
I hope Walter can see a good solution to this. Ideally they should behave
the same I feel.
Regan
Jul 20 2005
On Thu, 21 Jul 2005 16:10:23 +1200, Regan Heath <regan netwin.co.nz> wrote:
The behaviour of static and dynamic arrays is inconsistent here:
import std.stdio;
void main()
{
int[0] s;
int[ ] p = new int[0];
writefln("%d %x",p.length,p.ptr);
writefln("%d %x",s.length,s.ptr);
}
[Output]
0 0
0 12ff28
I would suggest that "int[0] s;" be an error, as it's pretty
meaningless.. Except template programmers would likely be a little
annoyed with that.
I would suggest that "int[0] s;" have a null data pointer (as the
dynamic one does), but I believe they're implemented in such a way that
there is no such data pointer.
I hope Walter can see a good solution to this. Ideally they should
behave the same I feel.
I suspect the solution is to cause "new int[0]" to allocate a zero length
item on the heap.
Regan
Jul 20 2005








"Regan Heath" <regan netwin.co.nz>