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