C ++ возвращает более точные два аргумента шаблона из функции?

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

6
задан gct 1 February 2011 в 18:49
поделиться