を作ってみた。 加算は、演算後に次元が変わらないので、割と簡単。 template Dimension(T) { static if (!is (typeof(T.init[0]))) { const size_t Dimension = 0; } else { const size_t Dimension = 1 + Dimension!(typeof(T.init[0])); } } template ElementType(T) { static if (0 == Dimension!(T)) { alias T ElementType; } else { alias typeof(T.init[0]) ElementType; } }という、エイリアス定義のテンプレートを用意しておき、 T add(T)(in T lhs, in T rhs) { static if (0 == D