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帖子的鏈接。 –