首页 > 后端开发 > C++ > 如何使用 C 中的静态函数初始化静态 Constexpr 成员?

如何使用 C 中的静态函数初始化静态 Constexpr 成员?

Linda Hamilton
发布: 2024-12-07 21:42:14
原创
320 人浏览过

How Can I Initialize a Static Constexpr Member with a Static Function in C  ?

使用静态函数初始化静态成员 Constexpr

问题:

您想要定义一个constexpr 成员具有静态函数,在编译时使用计算值对其进行初始化。但是,您尝试在 GCC 中执行此操作时会遇到编译错误。

初始尝试:

您的第一次尝试将静态 constexpr 成员和函数放置在类定义中,触发旧版本 GCC 中的编译错误。您的第二次尝试将这些元素移到了类主体之外,但您在后续版本中再次遇到了问题。

说明:

C 标准规定了 constexpr static 的特定要求数据成员。这些成员必须使用大括号或等于初始化程序进行初始化,其中每个赋值都是一个常量表达式。在您的“第二次尝试”中,您没有遵守此格式。

解决方案:

不幸的是,目前还没有使用静态函数初始化 constexpr 静态数据成员根据 C 标准是可能的。这是因为 constexpr 变量必须可作为成员函数体内的编译时常量使用。然而,静态函数在类完成之前是未定义的,使得表达式不可能成为常量表达式。

GCC 中观察到的问题:

您的第一次尝试应该是有效的,但可能在早期版本的 GCC 中遇到了错误。如果您可以访问更新版本的 GCC,那么值得再次尝试初始代码。

以上是如何使用 C 中的静态函数初始化静态 Constexpr 成员?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板