使用静态函数初始化静态成员 Constexpr
问题:
您想要定义一个constexpr 成员具有静态函数,在编译时使用计算值对其进行初始化。但是,您尝试在 GCC 中执行此操作时会遇到编译错误。
初始尝试:
您的第一次尝试将静态 constexpr 成员和函数放置在类定义中,触发旧版本 GCC 中的编译错误。您的第二次尝试将这些元素移到了类主体之外,但您在后续版本中再次遇到了问题。
说明:
C 标准规定了 constexpr static 的特定要求数据成员。这些成员必须使用大括号或等于初始化程序进行初始化,其中每个赋值都是一个常量表达式。在您的“第二次尝试”中,您没有遵守此格式。
解决方案:
不幸的是,目前还没有使用静态函数初始化 constexpr 静态数据成员根据 C 标准是可能的。这是因为 constexpr 变量必须可作为成员函数体内的编译时常量使用。然而,静态函数在类完成之前是未定义的,使得表达式不可能成为常量表达式。
GCC 中观察到的问题:
您的第一次尝试应该是有效的,但可能在早期版本的 GCC 中遇到了错误。如果您可以访问更新版本的 GCC,那么值得再次尝试初始代码。
以上是如何使用 C 中的静态函数初始化静态 Constexpr 成员?的详细内容。更多信息请关注PHP中文网其他相关文章!