我正在做一些数值模拟,它很好地超载载体上的操作(类似于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