6

当我为小型数学向量实现模板类时,我遇到了一个问题。对于算术运算,返回类型T1 lhs + T2 rhsstd::common_type<T1, T2>::type. 但是以下的返回类型是什么(例如 T1 有符号和 T2 无符号或相反,或 T1 char 和 T2 无符号 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 回答