On 5/17/15 5:27 AM, Idan Arye wrote:
On Sunday, 17 May 2015 at 12:09:37 UTC, Timon Gehr wrote:
On 05/17/2015 10:35 AM, Idan Arye wrote:
...

How about defining `alloc.allocate(0)` to *be* an error?

What is bad about allocate(0)?

It's not that allocating 0 bytes is wrong by itself(at first glance it
seemed very wrong to me, but then I remembered that you are never
allowed to read-from or writ-to it more than 0 bytes), but it's how
limited it's usefulness is compared to all the special-casing it
requires, it might be better to simply disallow it.

Prolly not a good idea, 0 works well for the most part as a natural lower bound, e.g.:

void fun(size_t n)
{
   int[] a = theAllocator.makeArray!int(n);
   scope(exit) theAllocator.dispose(a);
   foreach (ref e; a)
   {
       ...
   }
   ....
}

Special casing code like this for n==0 (lest functions start throwing etc) is not a good strategy to condone.


Andrei

Reply via email to