import std;
struct Matrix(size_t X, size_t Y = X)
{
enum x_length = X;
enum y_length = Y;
double[X * Y] data;
Matrix opBinary(string op)(Matrix rhs)
{
static if (op == "*")
{
static if (X == 2)
{
return Matrix();
}
else
static assert("不支持");
}
else
static assert(0, "未实现" ~ op ~ "操作符");
}
}
void main()
{
auto a = Matrix!(2)();
a.data = 0;
auto b = Matrix!(2)();
b.data = 0;
writeln("一样吗?", a == b);
auto m = Matrix!(2)();
m.data = [1.0, 0.0, 0.0, 1.0];
auto n = Matrix!(2)();
n.data = [2.0, 3.0, 4.0, 5.0];
auto u = m * n;
writeln("u.data对比n.data:");
for (int i = 0; i < u.data.length; ++i)
writeln(u.data[i], "\t", n.data[i]);
}