numeric_limits有问题

时间:2010-11-24 12:22:02

标签: c++ numeric

为什么这不起作用?

enum : long {MaxValue = std::numeric_limits<long int>::max()};

我收到错误:错误1错误C2057:预期的常量表达
什么不恒定呢?编译时已知long int的限制,那么问题是什么?

3 个答案:

答案 0 :(得分:5)

问题在于虽然std::numeric_limits<long int>::max()函数返回常量值,但在运行时中调用并且在编译时需要常量值

可能您只能使用LONG_MAX值(请参阅climits标题)?

答案 1 :(得分:3)

正如其他人所说,你需要一个常量表达式(函数不符合条件)。最终,C ++ 1x将支持更广泛的常量表达式,包括函数。见n2235和Bjarne Stroustrup的FAQ entry

答案 2 :(得分:1)

是的,但是在编译时无法执行函数。 max()