Мне любопытно, есть ли способ сделать это в C ++.Допустим, у меня есть шаблонный векторный класс:
template <typename T>
class vector {
public:
vector(T a, T b, T c) : x(a), y(b), z(c) {}
T x,y,z;
};
А затем у меня есть оператор сложения с шаблонами:
template <typename A, typename B>
vector<A> operator +(const vector<A> &a, const vector<B> &b) {
return vector<A>(a.x+b.x, a.y+b.y, a.z+b.z);
}
Мне интересно, можно ли изменить этот оператор, чтобы результаткакой из двух типов A и B является более точным, кроме ручной его специализации.
Например:
vector<float> + vector<double> would produce a vector<double>,
vector<long double> + vector<float> would produce a vector<long double>
Я полагаю, что в C ++ нет автоматической поддержки для этого, но я решил спросить.