4
struct Matrix(T, size_t row, size_t col){
alias row Row;
alias col Col;
auto opBinary(string op, M)(in M m) const if(op == "*"){
static assert(Col == M.Row, "Cannot Mix Matrices Of Different Sizes.");
// whatever...
return Matrix!(T, Row, M.Col)();
}
}
void main(){
Matrix!(double, 2, 3) m1 = Matrix!(double, 2, 3)();
Matrix!(double, 3, 2) m2 = Matrix!(double, 3, 2)();
Matrix!(double, 2, 2) m3 = m1 * m2; // ERROR
// Error: cannot implicitly convert expression (m1.opBinary(m2)) of type Matrix!(double,row,col) to Matrix!(double,2,2)
}
为什么错误,我该如何解决这个问题?相同模板参数时的不同类型?
因此,如果沃尔特不支持修复它,那么他不认为这是一个错误,对吧?他给了什么理由? – Arlen
他争辩说模板总是在它们的参数类型上实例化,而其他人基本上认为它们是在它们的参数的值上实例化的(大多数模板参数都是类型的)。错误报告:http://d.puremagic.com/issues/show_bug.cgi?id=3467 –
澄清并添加了NG帖子的链接。 –