struct Matrix(int row, int col){ /* ... */ }
// finds the inverse using Gauss–Jordan elimination
pure M inverse(M)(const ref M m){ /* ... */ }
कारण m
ref
प्रदर्शन की वजह से है। जाहिर है, मैं नहीं चाहता कि हर बार उलटा होने की आवश्यकता होने पर बड़ी मैट्रिक्स की प्रतिलिपि बनाई जा रही हो, और इसने अभी तक ठीक काम किया है।संकलन समय पर 'ref' का उपयोग कैसे करें?
लेकिन, यह जहां उलटा संकलन समय पर की जरूरत है स्थितियों में एक समस्या बन गया है:
mixin template A(){
alias Matrix!(3, 3) Matrix3x3;
static Matrix3x3 computeSomeMatrix(){ }
immutable Matrix3x3 _m = computeSomeMatrix();
immutable Matrix3x3 _m_1 = inverse(computeSomeMatrix()); // error
}
त्रुटि को ठीक करने के लिए, मैं एक गैर रेफरी को m
बदलने की जरूरत है, लेकिन यह है कि इसका मतलब है कि मैट्रिक्स हर बार inverse()
कहा जाता है की प्रतिलिपि बनाई जाएगी। मैं क्या करूं?
या बस बस रेफरी और गैर-रेफरी 'उलटा()' वेरिएंट दोनों हैं? – DejanLekic
आपको क्या सटीक त्रुटि मिल रही है? 'रेफरी' को संकलन समय पर काम करना चाहिए, शायद यह कुछ और है जो आप कर रहे हैं जो इसका कारण बन रहा है। – Robert
क्या आपने 'ऑटो रेफरी' की कोशिश की है? –