D needs emplacement new
weaselcat via Digitalmars-d
digitalmars-d at puremagic.com
Sat Apr 25 12:14:40 PDT 2015
On Saturday, 25 April 2015 at 19:09:15 UTC, Namespace wrote:
> On Saturday, 25 April 2015 at 18:57:13 UTC, Adam D. Ruppe wrote:
>> On Saturday, 25 April 2015 at 18:50:59 UTC, Namespace wrote:
>>> Nice name, fits better. But that should be in phobos, don't
>>> you think?
>>
>> meh, it might be nice to have, but not being in phobos isn't a
>> big deal to me for little utilities like this
> I'm sure newcomers (especially those coming from C++) would be
> delighted if they had the possibility to reuse their memory. In
> addition, it could be impossible for them to write such "hack"
> itself.
> I already hear the cries: "D wasted memory" and: "I can not
> reuse my memory".
> And then it would be less attractive for such people, to switch
> to D.
>
> I would suggest something like:
> ----
> T emplace(T, U...)(ref T obj, auto ref U args) if (is(T ==
> class)) {
> if (!obj)
> return null;
>
> import std.conv : emplace; // temporary, as long it is not
> in std.conv
>
> enum ClassSizeOf = __traits(classInstanceSize, T);
>
> void[] buf = (cast(void*) obj)[0 .. ClassSizeOf];
> return emplace!(T)(buf, args);
> }
>
> T emplaceOrNew(T, U...)(ref T obj, auto ref U args) if (is(T ==
> class)) {
> if (!obj)
> return new T(args);
> return emplace(obj, args);
> }
> ----
hmm...
http://dlang.org/phobos/std_conv.html#.emplace
More information about the Digitalmars-d
mailing list