2つの値を保持するテンプレートを作って、SIZEやPOINTにキャストできるようにしたり
以下のように演算子を定義しました。(部分抜粋です)
friend UPair<T1, T2> operator +(const UPair<T1, T2> &up1, const UPair<T1, T2> &up2){
UPair<T1, T2> ret;
ret.m_t1 = up1.m_t1 + up2.m_t1;
ret.m_t2 = up1.m_t2 + up2.m_t2;
return ret;
};
friend UPair<T1, T2> operator -(const UPair<T1, T2> &up1, const UPair<T1, T2> &up2){
UPair<T1, T2> ret;
ret.m_t1 = up1.m_t1 - up2.m_t1;
ret.m_t2 = up1.m_t2 - up2.m_t2;
return ret;
};

コンパイルすると
fatal error C1001 : 内部コンパイラエラー が出てしまいます。
operator-の部分をコメントアウトすると無事通るのですが、何が悪いのでしょうか?
おしえてください。