numeric_limits 的问题

发布于 2024-10-03 19:28:36 字数 210 浏览 2 评论 0原文

为什么这不起作用?

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

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

Why this doesn't work?

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

I'm getting error :Error 1 error C2057: expected constant expression
What isn't constant about it? Limits of long int are known at compile time so what's the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一向肩并 2024-10-10 19:28:36

问题是,虽然 std::numeric_limits::max() 函数返回常量值,但它是在运行时调用,并且您在编译时需要常量值-time

也许你可以只使用 LONG_MAX 值来代替(请参阅climits 标题)?

The problem is that although std::numeric_limits<long int>::max() function returns constant value it is called in run-time and you need constant value in compile-time

Probably you can just use LONG_MAX value instead (see climits header)?

反差帅 2024-10-10 19:28:36

正如其他人所说,您需要一个常量表达式(函数不符合条件)。最终 C++1x 将支持更广泛的常量表达式,包括函数。请参阅 n2235 和 Bjarne Stroustrup 的 常见问题解答条目

As the other have said, you need a constant expression (functions don't qualify). Eventually C++1x will support a wider range of constant expressions, including functions. See n2235 and Bjarne Stroustrup's FAQ entry.

心舞飞扬 2024-10-10 19:28:36

是的,但是函数不能在编译时执行。 最大()

Yes, but a function cannot be executed at compile time. max()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文