【发布时间】:2012-07-31 18:01:37
【问题描述】:
当我为小型数学向量实现模板类时,我遇到了一个问题。
对于算术运算,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 ?
非常感谢。
【问题讨论】:
-
您知道对有符号值执行按位函数所固有的缺陷吗?
-
您想以编程方式获取它还是想知道它?在后一种情况下,声明(但不定义)具有单个参数的模板函数并使用表达式调用它。编译器会告诉你错误信息中的类型
-
除非我弄错了(我可能是,哦,是的)
<<和>>仅取决于 lhs 的类型。 (对于内置类型,就是这样。)