template<typename T, int n>

class Vector {

public:

    T GetComp(int i) {        

        return comp[i];

    }


    void SetComp(int i, T val) {

        comp[i] = val;

    }


    Vector operator+(const Vector& rhs) const {

        Vector res;

        for (int i = 0; i < n; i++) {

            res.comp[i] = this->comp[i] + rhs.comp[i];

        }

        return res;

    }


private:

    T comp[n];  

};



int main() {

    Vector<float, 3> v1, v2;

    Vector<float, 2> v4;


    v1.SetComp(0, 2);

    v1.SetComp(1, 3);

    v1.SetComp(2, 4);


    v2.SetComp(0, 5);

    v2.SetComp(1, 6);

    v2.SetComp(2, 7);


    Vector<float, 3> v3 = v1 + v4;     // <= 에러가 발생하는 코드입니다


    cout << v3.GetComp(0) << ", " << v3.GetComp(1) << ", " << v3.GetComp(2) << endl;

}

대략적인 코드를 위와 같이 구성해보았는데, 파라미터값이 서로 다른 상황에서 +연산이 가능하게끔 설계해보고 싶습니다

파라미터 값이 같은 v1과 v2끼리는 연산이 잘 되어서 괜찮지만, 파라미터 값이 다를 땐 어떻게 설계해야 연산이 가능할까요?

조언을 구하고 싶습니다