DMD-0.149

おおお。

http://www.kmonos.net/wlog/59.php#_0030060309

とりあえずポーションは飲みました。

それはともかくやっと swap が書けるんですな。

> cat swap.d
template swap(T) {
    void swap(inout T a, inout T b) {
        T t = a;
        a = b;
        b = t;
    }
}

int main() {
    int i = 1;
    int j = 2;
    swap(i, j);
    printf("%d %d\n", i, j);
    return 0;
}
> dmd swap.d
gcc swap.o -o swap -lphobos -lpthread -lm
> ./swap
2 1

int scope = 1; とか通らないのね…

あとこういうのがダメなあたりが limited ですかね。

private import std.string;

template tostr(T) {
    char[] tostr(T t) {
        return std.string.toString(t);
    }
}

template tostr(T: Object) {
    char[] tostr(T t) {
        return t.toString();
    }
}

import std.stdio;
unittest {
    class C {}

    int main() {
        writefln(tostr(1));
        writefln(tostr("aa"));
        auto C c = new C();
        writefln(tostr(c));
    }
}
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h