On Sunday, 27 April 2014 at 05:43:07 UTC, Andrei Alexandrescu wrote:
Added SbrkRegion, SimpleBlocklist, and Blocklist.

http://erdani.com/d/phobos-prerelease/std_allocator.html#.SbrkRegion
http://erdani.com/d/phobos-prerelease/std_allocator.html#.SimpleBlocklist
http://erdani.com/d/phobos-prerelease/std_allocator.html#.Blocklist

https://github.com/andralex/phobos/blob/allocator/std/allocator.d

Destruction is as always welcome. I plan to get into tracing tomorrow morning.


Andrei

There are quite a few places where functions could be marked pure, nothrow, @safe, or @trusted that have not been. I have a pull request open for many of these.

I also have a feature request. I think something like this should be added to std.allocator:

/**
 * Shortcut that encapsulates a cast and a call to emplace()
 * Params:
 * a = the allocator to use
 * args = the arguments to $(D T)'s constructor
 * Returns: a pointer to an instance of $(D T).
 */
T* allocate(T, Allocator, Args...)(auto ref Allocator a, auto ref Args args)
    @trusted if (is (T == struct))
{
    import std.conv : emplace;
    void[] mem = a.allocate(T.sizeof);
    return emplace(cast(T*) mem.ptr, args);
}

The allocate-cast-initialize pattern is incredibly common in the code that I've written using allocators so far and I'd like it to be in Phobos so that it does not need to be re-implemented everywhere.

Reply via email to