numeric_limits有问题

The*_* do 5 c++ numeric

为什么这不起作用?

enum : long {MaxValue = std::numeric_limits<long int>::max()};
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*mir 5

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

可能你只能LONG_MAX使用价值(参见climits标题)?

  • C++ 0X引入了`constexpr`,它将有助于解决这类问题 (3认同)
  • Boost还有`boost :: integer_traits`类模板,其中包含`const_min`和`const_max`成员. (3认同)