DMD 2.015キタコレ
凄い凄い。テンプレート周りのバグ修正、新機能。
ニュースフォーラムでも話題でてるけど、auto foo()(){return 10;}と書ける。
関数テンプレートにはif付けられないんだな。まぁ二つの文に分ければうまくいくけど。
expression.dにif使ってみたけど何かおかしげ。要検討。
以下がダメ。
import std.stdio; class Foo{ Foo opSub(T:Foo)(T x){ return this; } Foo opSub(T)(T x){ static assert(0); } template opSub_r(T) if(!is(T:Foo)){ Foo opSub_r(T x){ static assert(0); } } } void main(){ Foo x = new Foo, y = new Foo; x - y; }
autoもおかしげだなぁ。メンバ変数に使えないとか? 要検討。
うーん、以下がダメだ。
import std.stdio; auto foo(TL...)(TL tl){ return tl[0]; } void main(){ writefln(foo(2)); }
なんぞこれ
import std.stdio; template test(int x:10){ enum test = x; } void main(){ writefln(test!(10)); }
import std.stdio; template test(alias int x){ alias x test; } void main(){ writefln(test!(10)); }