2011-02-28 2 views
4

의 내가 2 차원 벡터 템플릿 클래스있어 가정하자 :C++ : 비 네이티브 유형의 프로모션

template<typename T> class Vec2 { 
    T x, y; 
    // ... 
}; 

가 나는 Vec2<double>Vec2<int> 사이에 합의 결과가 Vec2<double> 될 것이라고 기대를, 하지만 C++은 기본적으로이 작업을 수행하지 않습니다.

내가 잘못 생각하고 있습니까?
이 동작을 시도하고 구현해야합니까?

어떻게 구현해야합니까? 한 가지 방법은 모든 연산자를 오버로드하여 승격 된 유형이 autodecltype 또는 일부 do it yourself type promotion을 사용하여 계산되지만,이 방법은 사소한 일이며 내 작업을 쉽게하기 위해 boost.operators를 사용하지 못하게 할 수도 있습니다. 다른 제안?

답변

0

Vec2<double>Vec2<int>이 같은 템플릿에서 생성되는 일이 완전히 독립적 인 유형입니다. 이 두 가지를 모두 포함하는 작업을 원한다면 직접 구현해야합니다.

기본 유형을 기반으로 홍보하는 일반 연산자를 만들거나 필요한 경우 (IMO 안전)에 대한 명시적인 프로모션을 만들 수 있습니다.