Vin*_*ent 6 c++ types operators
当我为小数学向量实现模板化类时,我遇到了一个问题.对于算术运算,返回类型T1 lhs + T2 rhs是std::common_type<T1, T2>::type.
但是以下的返回类型是什么(例如T1签名和T2无符号或相反,或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 ?
Run Code Online (Sandbox Code Playgroud)
非常感谢你.
我假设您要对向量实现按分量按位运算。本质上,按位运算是整数运算,我认为没有理由不将其结果设为std::common_type<T1, T2>::type.
移位的结果不依赖于正确的操作数。只需使用T1即可。