SumTypeの例

SumTypeを使用すると、複数の型を複合した型を形成することができます。 タグ付き共用体の1形態です。
Examples: SumTypeの初期化と値の取り出し方
値の設定はコンストラクタか、代入によって行います。 値の取り出しは、matchテンプレートを使用します。
See_Also:
import std.sumtype: SumType, match;
// intとdoubleを入れることのできるSumTypeを作成します。
// 初期値はintの10。
auto val = SumType!(int, double)(10);

// valにはint型の10が入っているので、 (int a) にマッチします。
auto dat1 = val.match!(
    (int a) => a,
    (double a) => 0);
assert(dat1 == 10);

// 再代入はこのように行います。
// int型かdouble型なら代入可能です。
val = 3.1416;
// 今度は (double a) にマッチします。
auto dat2 = val.match!(
    (int a) => a,
    (double a) => 0);
assert(dat2 == 0);