struct A(T...) {
union {T field;}
}

A!(int, real, string) a;
a.field[0] = 0;
a.field[1] = real.nan;
a.field[2] = "aho";
foreach (f; a.field) writeln(f);

みたいなことができると今日知った
仕様書に書いてあればいいのに