”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 能否使用 C++ 中的 Constexpr 函数初始化静态 Constexpr 成员?

能否使用 C++ 中的 Constexpr 函数初始化静态 Constexpr 成员?

发布于2024-12-22
浏览:503

Can a Static Constexpr Member Be Initialized Using a Constexpr Function in C  ?

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

原始问题:

在 C 中,是否可以从 constexpr 函数计算 constexpr 值(编译时常量)并将其存储为 a 的静态成员class?

第一次尝试和编译器的响应:

第一次尝试在类中定义静态 constexpr 函数 foo 并使用 foo 初始化静态 constexpr 成员 bar 失败g -4.5.3 和 g 均存在错误-4.6.3.

解释:

根据 C 标准,可以使用大括号或等号在类定义中初始化静态 constexpr 数据成员-初始化器,其中每个初始化器子句必须是常量表达式。提供的代码违反了此规则,因为 bar 的初始化依赖于类体内的 const 表达式 foo(sizeof(int)),使其不是常量表达式。

进一步分析:

进一步的尝试,包括将 constexpr 函数定义移到类体之外,仍然导致 g -4.6.3 中出现错误,突出显示特定于编译器的错误

结论:

根据 C 标准,在 a 的定义之外,不允许使用涉及 constexpr 函数调用的初始值设定项来初始化静态 constexpr 数据成员。 constexpr 函数或 constexpr 构造函数。这是因为 constexpr 变量必须可用作成员函数体内的编译时常量。

最新教程 更多>
  • JavaScript 如何在后台工作:了解其单线程性质和异步操作
    JavaScript 如何在后台工作:了解其单线程性质和异步操作
    JavaScript 是网络的支柱,为数十亿网站和应用程序提供动态客户端功能。但您有没有想过 JavaScript 是如何在后台发挥其魔力的?在这篇文章中,我们将深入研究 JavaScript 单线程本质的内部工作原理并探索异步编程的概念。 单线程是什么意思? 当我们说 JavaSc...
    编程 发布于2024-12-22
  • 如何轻松备份和恢复所有 MySQL 数据库?
    如何轻松备份和恢复所有 MySQL 数据库?
    轻松备份和恢复 MySQL 数据库:综合指南管理大量 MySQL 数据库可能令人望而生畏。为了安全的数据保护,创建定期备份至关重要。本综合指南将提供有关如何轻松同时导出和导入所有 MySQL 数据库的分步说明。导出多个数据库利用 mysqldump 实用程序是导出多个数据库的首选方法立刻。使用命令行...
    编程 发布于2024-12-22
  • 如何防止Python实例之间的类数据共享?
    如何防止Python实例之间的类数据共享?
    如何隔离各个实例的类数据为了避免在多个实例之间共享类数据并确保每个实例维护自己的数据,请按照下列步骤操作:在构造函数中声明变量 (__init__ Method)不要在任何方法之外声明类级变量,而是在 init 构造函数方法中定义它们。例如:class a: def __init__(sel...
    编程 发布于2024-12-22
  • 如何从 Windows 上的 C++ 控制台应用程序打印 UTF-8?
    如何从 Windows 上的 C++ 控制台应用程序打印 UTF-8?
    在 Windows 上从 C 控制台应用程序打印 UTF-8使用 Visual Studio 2008 在英语 Windows 系统上开发 C 控制台应用程序时,用户可能会在显示 UTF- 时遇到挑战8 通过cout或wcout正确编码内容。以下是解决此问题的方法:解决方案:解决方案涉及将控制台的输...
    编程 发布于2024-12-22
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-12-22
  • 为什么 Java 的整数常量池在 127 以上表现不同?
    为什么 Java 的整数常量池在 127 以上表现不同?
    问题:127处Java整数常量池行为的分歧简介:The整数常量池是Java中的一种机制,可以优化常见整数值的缓存以提高性能。然而,该池的行为在 127 时出现了变化,引起了开发人员的困惑。理解行为:对于从 -128 到 127 的整数,Java 保证引用相同常量的变量具有相同的引用。Integer ...
    编程 发布于2024-12-22
  • 如何在 Go 中解组具有混合数据类型的 JSON 数组?
    如何在 Go 中解组具有混合数据类型的 JSON 数组?
    解组具有混合数据类型的 JSON 数组解组包含不同数据类型值的 JSON 数组的任务通常会带来挑战。例如,考虑以下 JSON 数组:{["NewYork",123]}问题:首先,需要注意的是提供的 JSON 在语法上不正确。 JSON 对象需要每个值的键,因此正确的表示形式是 {...
    编程 发布于2024-12-22
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-12-22
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-12-22
  • 如何使用 Java 和 JFreeChart 用轴注释 .png 文件?
    如何使用 Java 和 JFreeChart 用轴注释 .png 文件?
    如何使用 Java 用轴注释 .png 文件无需依赖外部软件即可用轴注释 .png 图像。下面是一种利用 Java 内置功能和 JFreeChart 进行高级定制的方法:创建图表基础首先,使用 JFreeChart 的 ChartFactory.createXYLineChart 方法创建图表。这将...
    编程 发布于2024-12-22
  • 新博客系列:Python 人工智能基础知识
    新博客系列:Python 人工智能基础知识
    欢迎来到我的新博客系列,我们将在机器学习的背景下探索 Python 的迷人世界。由于其简单性和提供的强大库,Python 已成为数据科学和机器学习领域的基石。无论您是初学者还是希望提高自己的技能,本系列都将指导您了解 Python 的基础知识,为您的机器学习之旅奠定坚实的基础。 系列...
    编程 发布于2024-12-22
  • 如何在 JavaScript 变量中安全地嵌入 PHP 字符串?
    如何在 JavaScript 变量中安全地嵌入 PHP 字符串?
    为 JavaScript 变量编码 PHP 字符串当尝试将包含引号或换行符的 PHP 字符串嵌入到 JavaScript 变量中时,有必要正确编码它们以避免解析错误。对这些字符串进行编码的最直接方法是通过 PHP 的 json_encode() 函数。要使用此函数,请确保您使用的是 PHP 版本 5...
    编程 发布于2024-12-22
  • 如何使用 AJAX 高效地将 JavaScript 数组发送到 PHP?
    如何使用 AJAX 高效地将 JavaScript 数组发送到 PHP?
    使用 AJAX 高效地将 JavaScript 数组传递给 PHP许多 JavaScript 应用程序使用需要发送到 PHP 进行处理的数据数组。一次遍历和处理数组中的一个元素可能效率很低,尤其是对于大型数组。本文提供了一种使用 JSON 和 AJAX 来优化此过程的替代方法。问题:应用程序需要通过...
    编程 发布于2024-12-22
  • 探索 Python 认证 4
    探索 Python 认证 4
    Python 认证近年来获得了极大的普及和重要性。随着对 Python 程序员和数据分析师的需求不断增长,这些认证对于个人展示其在该领域的技能和专业知识变得至关重要。虽然有多种 Python 认证可供选择,但全球公认的最负盛名的认证是 Python Institute 提供的认证。在本文中,我们将探...
    编程 发布于2024-12-22
  • 提升 JavaScript 错误处理水平:从“try...catch”到自定义错误
    提升 JavaScript 错误处理水平:从“try...catch”到自定义错误
    错误处理是每个 JavaScript 开发人员都会遇到的事情之一,但并不是每个人都深入掌握它。如果您一直依赖简单的 try...catch 语句,那么是时候提升您的游戏水平了。这篇文章将带您完成从基本错误处理到制作自定义错误的整个过程,使您的代码更具弹性且更易于调试。 1. 基础知识...
    编程 发布于2024-12-22

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3