おおお。
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)); } }