On Wednesday, 26 February 2014 at 09:14:42 UTC, Bienlein wrote:

A similar approach is already employed in phobos, see http://dlang.org/phobos/std_typecons.html#.scoped

The article confused me. Is the contents outdated or am I messing something up?

Regarding keywords new and delete: http://dlang.org/class.html#allocators. Read the Notes carefully :) In a nutshell, 'delete' keyword will eventually go away entirely, and it won't be allowed to redefine 'new'.

Regarding the code in the article:

import std.stdio, std.conv, core.stdc.stdlib;

    T _new(T, Args...) (Args args) {
        size_t objSize = __traits(classInstanceSize, T);
        void* tmp = core.stdc.stdlib.malloc(objSize);
        if (!tmp) throw new Exception("Memory allocation failed");

Calling 'new Exception' when memory allocation failed is a bad idea. There is std.exception.onOutOfMemoryError() function for such cases.

    void _delete(T)(T obj) {
        clear(obj);

destroy(obj) should be used instead.

It's possible that some new idioms will come up once std.allocator arrives into Phobos.

Reply via email to