История изменений
Исправление zaz, (текущая версия) :
Вот добавил более «правильный фикс»
constexpr int DMAX(int n1, int n2) { return (n1 > n2) ?n1 :n2; };
template <int D1, int D2, typename T1, typename T2>
inline Vec<DMAX(D1,D2), decltype(T1()+T2())> operator + (const Vec<D1,T1> &a, const Vec<D2,T2> &b){
Vec<DMAX(D1,D2), decltype(T1()+T2())> r;
for(int i=0; i<DMAX(D1,D2); i++) {
if((i<D1) && (i<D2)) r[i] = a[i]+b[i];
else if(i<D1) r[i] = a[i];
else r[i] = b[i];
}
return r;
}
Исходная версия zaz, :
Вот добавил более правильный «фикс»
constexpr int DMAX(int n1, int n2) { return (n1 > n2) ?n1 :n2; };
template <int D1, int D2, typename T1, typename T2>
inline Vec<DMAX(D1,D2), decltype(T1()+T2())> operator + (const Vec<D1,T1> &a, const Vec<D2,T2> &b){
Vec<DMAX(D1,D2), decltype(T1()+T2())> r;
for(int i=0; i<DMAX(D1,D2); i++) {
if((i<D1) && (i<D2)) r[i] = a[i]+b[i];
else if(i<D1) r[i] = a[i];
else r[i] = b[i];
}
return r;
}