struct Matrix(int row, int col){ /* ... */ }
// finds the inverse using Gauss–Jordan elimination
pure M inverse(M)(const ref M m){ /* ... */ }
m
ref
nedenidir. Açıkçası, her zaman tersine ihtiyaç duyulan büyük matrislerin kopyalanmasını istemiyorum ve bu şimdiye kadar gayet iyi çalıştı.Derleme zamanında 'ref' nasıl kullanılır?
Ama, ters derleme zamanında ihtiyaç duyulan durumlarda bir sorun haline gelmiştir:
mixin template A(){
alias Matrix!(3, 3) Matrix3x3;
static Matrix3x3 computeSomeMatrix(){ }
immutable Matrix3x3 _m = computeSomeMatrix();
immutable Matrix3x3 _m_1 = inverse(computeSomeMatrix()); // error
}
Ben olmayan bir ref etmek m
değiştirmeniz gerekir, hatayı düzeltmek için, ama bu matrisler demektir inverse()
her seferinde kopyalanacaktır. Ben ne yaparım?
Ya da sadece ref ve non-ref 'inverse()' türevleri var? – DejanLekic
Aldığınız tam hata nedir? 'ref', derleme zamanında çalışmalı, muhtemelen buna neden olan başka bir şey. – Robert
'auto ref' denediniz mi? –