mixin
いままでmixinってなんだ?hoge!(foo)ってなんだ?って思ってたけど、ようはmixinはコードの展開で、hoge!()って式はテンプレートから何かしらの式を現在のスコープに展開/取り込む式だってことが分かった。そうじゃなくて、C++だと<>で引数を取るんだけど、それだとシフト演算とかと勘違いしてしまうので、!()という構文を取り入れた、ということらしい。
import std.stdio; template Hoge(T, T a) { T x = a; } void main() { ///int x = 42;が現在のスコープに展開される。 mixin Hoge!(int, 42); writefln("%d", x); { mixin Hoge!(int, 0); writefln("%d", x); } writefln("%d", x); return; }
テンプレート再訪 - プログラミング言語 D (日本語訳)
テンプレート・ミックスイン - プログラミング言語 D (日本語訳)
ミックスイン - プログラミング言語 D (日本語訳)