6

小さな数学ベクトル用にテンプレート化されたクラスを実装していると、1 つの問題に遭遇します。算術演算の戻り値の型は次のとおりT1 lhs + T2 rhsですstd::common_type<T1, T2>::type. が、次の戻り値の型は何ですか (たとえば、T1 signed と T2 unsigned またはその逆、または T1 char と T2 unsigned long long int など...) :

T1 lhs & T2 rhs ?
T1 lhs | T2 rhs ?
T1 lhs ^ T2 rhs ?
T1 lhs << T2 rhs ?
T1 lhs >> T2 rhs ?

どうもありがとうございました。

4

1 に答える 1

4

ベクトルに対してコンポメントごとのビットごとの操作を実装しようとしていると思います。基本的にビット演算は整数演算であり、その結果をstd::common_type<T1, T2>::type.

シフトの結果は、右オペランドに依存しません。T1を使用するだけです。

于 2012-07-31T18:06:15.900 に答える