On Monday, 29 April 2013 at 12:08:58 UTC, monarch_dodra wrote:
I've hit this issue before: In D, if the *managed* memory runs
out, then it is an error (since then *everything* crumbles:
arrays, GC. etc). The reason it is an error is that since the
memory is managed by the language, there is nothing the user
can do anyway, so throwing is pointless.
for unmanaged memory, on the otherhand, the user *can* do
something about it, so throwing is better.
I myself am not sure I 100% agree with this, but that was the
conclusion last time I tried to transform an malloc=>Exception
into a malloc=>Error+Nothrow
What about using allocators the user can specify? The default one
would be malloc + Error + nothrow. All the signatures of
RefCounted have to change depending on the allocator's ones,
though. This is where attribute inference is rather needed.