我正在做一些數值模擬,它很好地超載載體上的操作(類似於valarrays)。例如,我可以寫C++廣義操作員模板
template <typename T>
vector<T> operator*(const vector<T>& A, const vector<T>& B){
//blah blah
}
但是,如果我想概括這個模板,從而作用於兩種不同類型的載體和(潛在的)返回第三種類型是什麼?即我想寫
template <typename T, template U, template V>
vector<V> operator*(const vector<T>& A, const vector<U>& B){
//blah blah
}
現在,如果我用的是運營商的情況「A * B」其中A和B是不同的類型,並返回一個又一個不同的類型上面確實工作。但是,如果A和B是相同的類型,它不起作用。當然,我可以爲每個組合定義不同的模板(即僅T,或T和U,或T,U和V),但看起來很醜。有沒有一種方法可以使用上面給出的T,U和V變種的單個模板表達式,並且即使「A」,「B」和「A * B」都是相同類型(或有隻有2個不同類型的?)
我沒有模板參數推導看看返回值(你不能在返回類型上重載) – sehe