以下代码(触发错误的简化示例)无法使用VS 2008进行编译:
#include <math.h>
void test()
{
long long int val1 = 1;
long long int val2 = 2;
long long int val3 = abs<long long int>(val1 / val2);
}
在第三行给出编译器错误(C2062) - 类型__int64是意外的。这个错误的原因是什么?如何避免?
答案 0 :(得分:2)
标准中未指定long long
版abs
。
26.5 / 3显示了我们int
和long
版本。
26.5 / 5为我们提供float
,double
,long double
重载。
我怀疑似乎不需要其他重载,因为long long
并非所有编译器/系统都强制要求或支持。