...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

Added Constraints to templates - dmd2.015

特殊化を使う,以前の書き方.

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
}

柔軟性とわかりやすさがアップ?