FYI - mo' work on std.allocator

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun Apr 27 08:29:04 PDT 2014


On 4/26/14, 11:13 PM, Brian Schott wrote:
> 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.

Thanks!

> 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.

Totally. That will be part of typed allocators, module that's now empty :o).


Andrei



More information about the Digitalmars-d mailing list