特殊化を使う,以前の書き方.
import std.stdio; template factorial(int n) { enum factorial = n * factorial!(n-1); } template factorial(int n : 1) { enum factorial = 1; } void main() { writefln(factorial!(4));//24 }
これからは特殊化を使わなくても書ける.
import std.stdio; template factorial(int n) if (n != 1) { enum factorial = n * factorial!(n-1); } template factorial(int n) if (n == 1) { enum factorial = 1; } void main() { writefln(factorial!(4));//24 }
柔軟性とわかりやすさがアップ?