标签: c++ numeric
为什么这不起作用?
enum : long {MaxValue = std::numeric_limits<long int>::max()};
我收到错误:错误1错误C2057:预期的常量表达 什么不恒定呢?编译时已知long int的限制,那么问题是什么?
答案 0 :(得分:5)
问题在于虽然std::numeric_limits<long int>::max()函数返回常量值,但在运行时中调用并且在编译时需要常量值
std::numeric_limits<long int>::max()
可能您只能使用LONG_MAX值(请参阅climits标题)?
LONG_MAX
答案 1 :(得分:3)
正如其他人所说,你需要一个常量表达式(函数不符合条件)。最终,C ++ 1x将支持更广泛的常量表达式,包括函数。见n2235和Bjarne Stroustrup的FAQ entry。
答案 2 :(得分:1)
是的,但是在编译时无法执行函数。 max()
max()