Мне любопытно, есть ли способ сделать это в 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 ++ для этого нет автоматической поддержки, но я решил спросить.