`const int a = 1;` 是 `a` 常量表达式,如果 `a` 具有自动存储期限

2023-11-29

N4527 5.20[表达式常量]p2

条件表达式 e 是 a核心常量表达式除非 e 的评估遵循以下规则 抽象机(1.9)将评估以下表达式之一:

(2.7) — 左值到右值的转换 (4.1) 除非它应用于

(2.7.1) —引用完整非易失性 const 的整型或枚举类型的非易失性泛左值 具有先前初始化的对象,用常量表达式初始化,或者

(2.7.2) — 引用字符串文字 (2.13.5) 的子对象的非易失性左值,或

(2.7.3) — 引用用 constexpr 定义的非易失性对象的非易失性泛左值,或者引用 到此类对象的不可变子对象,或者

(2.7.4) — 文字类型的非易失性左值,引用其生命周期开始的非易失性对象 在 e 的评估范围内;

5.20[表达式常量]p5

常量表达式可以是左值核心常量表达式其值指的是一个实体 常量表达式(如下定义)的允许结果,或纯右值核心常量表达式,其 value 是一个对象,其中对于该对象及其子对象:

— 每个引用类型的非静态数据成员引用一个实体,该实体是常量表达式的允许结果,并且

— 如果对象或子对象是指针类型,则它包含具有静态存储持续时间的对象的地址、此类对象末尾之后的地址 (5.7)、函数的地址或空指针值。

如果一个实体是一个对象,那么它就是常量表达式的允许结果静态存储时间这要么不是临时对象,要么是其值满足上述约束的临时对象,或者是一个 功能。

void foo(){
    const int a = 1;//a has automatic storage duration
    int b[a]{};
}

In int b[a]{};, a是一个 id 表达式,a是左值核心常量表达式。是a常量表达式?


这是一个澄清左值整型常量表达式是常量表达式吗?


a可以是纯右值核心常量表达式,但不能是左值核心常量表达式,也不应该是可能的。您已经在标准中找到了这些措辞,因此也许最好解释一下为什么这些规则是这样的。

void foo(){
    const int a = 1;//a has automatic storage duration
    static constexpr const int &ra = a;// cannot possibly be valid
}

这无效,因为它需要地址a之前为人所知foo在那之前被叫到is any a.

Your int b[a]{};很好,因为它正在使用a作为纯右值核心常量表达式:它不关心在哪里a被存储,它只关心它有什么价值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

`const int a = 1;` 是 `a` 常量表达式,如果 `a` 具有自动存储期限 的相关文章

  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 如何从 C# 中的 dataTable.Select( ) 查询中删除单引号?

    所以我有一个经销商名称列表 我正在我的数据表中搜索它们 问题是 一些傻瓜必须被命名为 Young s 这会导致错误 drs dtDealers Select DealerName dealerName 所以我尝试替换字符串 尽管它对我不起作
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 为什么“外部”存储类的功能不同?

    下面的代码片段工作正常 extern int i int i int main return 0 我得到的是 i 被声明然后定义 由于只有一个定义 所以完全没问题 int main extern int i int i return 0 现
  • AS3/AIR:如果手机使用纵向,如果平板电脑使用横向?

    好的 我自己编写了一个简单的 DeviceCapabilites 类 以便能够检查设备是否是手机或平板电脑等 但我需要能够说 如果用户使用手机 它应该处于纵向模式 如果在平板电脑上我只想使用横向模式 有什么想法吗 编辑 为了清楚起见 我想在
  • 建立多态关联

    我正在尝试向我的网站添加 以下 之类的功能 但我无法找到使用多态关联的正确方法 用户需要能够关注 3 个不同的类别 这 3 个类别不会关注用户 我过去曾创建过一个跟随用户的用户 但事实证明这更加困难 我的迁移是 class CreateRe
  • 更改金额后 PayPal React 显示额外按钮

    没有react paypal button v2 有60 KB的开销 类似问题here但他们建议反应贝宝按钮 v2 我正在尝试制作一个 React PayPal 按钮来更改道具更改的计费金额 我用道具价格调用以下组件 每次价格变化时我想重新
  • python递归返回None类型[重复]

    这个问题在这里已经有答案了 没看懂 怎么退货List代替None class foo def recursion aList if isGoal aList 1 return aList for item in anotherList ne
  • SQLPlus 尝试删除包两次

    在 SQLPlus 中执行脚本时我遇到了一个问题 script sql 包含以下行 some pkg pks some pkg pkb drop package some pkg 打电话后 gt sqlplus 用户 密码 dbname s
  • 在 Windows 上构建支持 SSL 的 libcurl

    我在 Win32 C 应用程序中使用 libcurl 我已将curlib vcproj 项目添加到我的解决方案中 并将其他项目设置为依赖于它 如何在启用 SSL 支持的情况下构建它 这个答案已经过时了 请参阅此处的实际指南https cur
  • cudaMemset 在 __device__ 变量上失败

    我使用时遇到问题cudaMemset在设备变量上 是否可以使用对设备变量的引用cudaMemset 或者只是缺少编译器标志或库的问题 我正在使用 cuda 4 1 并且 NVRM 版本 NVIDIA UNIX x86 64 内核模块 285
  • 如何向 Android AsyncTask 传递值

    这是我第一次使用 AsyncTask 对于传递值可能也有点困惑 我有 4 个ArrayList
  • C++中如何连接字符串?

    string degreesToDMS double angle int intpart 0 int intpart2 0 int intpart3 0 return floor angle lt lt xb0 lt lt modf ang
  • 一个 Java 文件,但两个类

    我的项目中有一些课程 编译后 我找到两个 java 文件到每个类 name class 和 name class 原因可能是什么 我认为这些课程没有什么特别的 问候 它是一个匿名内部类 例如 new Runnable Edit 评论中的一些
  • Spring - 没有可用于当前线程的实际事务的 EntityManager - 无法可靠地处理“持久”调用

    当尝试调用 persist 方法将实体模型保存到 Spring MVC Web 应用程序中的数据库时 出现此错误 在互联网上确实找不到与此特定错误相关的任何帖子或页面 EntityManagerFactory bean 似乎有问题 但我对
  • 安装 Xcode 4 并保留 Xcode 3?

    我已经读过很多次我们可以安装 Xcode 4 并保留 Xcode 3 但是 我还了解到 Xcode 4 GM 不可能做到这一点 有人成功做到过吗 Update 好的 我已经安装了 不同的文件夹 但一开始总是崩溃 xcode遇到内部逻辑错误
  • Android P 无法写入文件

    我无法在 Android P 存储卡中写入文件 相同的代码在 Android O 中运行良好 new File file getParent mkdirs output new ObjectOutputStream new FileOutp
  • C#:System.Net.WebException:底层连接已关闭

    我有以下代码 String url a valid url String requestXml File ReadAllText filePath opens file reads all text and closes it byte b
  • 如何在没有 Mac 的情况下构建 iPhone Xamarin 应用程序?

    我正在开发 xamarin 表单应用程序 我可以生成 APK 并在我的 Android 设备上运行它 但如果没有 Mac 我怎样才能对 iPhone 做同样的事情呢 有没有办法在应用程序中心或 azure devops 上构建我的应用程序并
  • Android 应用程序构建在 geotools 库上,缺少本机 java 库

    我想使用 eclipse 在 Android 应用程序中使用 geotools 目前是 8 0 M3 也可能是 2 7 3 库 win7 教授 4GB 内存 但是构建过程崩溃了 我收到以下错误 未处理的事件循环异常 Java 堆空间 jav
  • XAMPP 服务器不加载 CSS 文件 [重复]

    这个问题在这里已经有答案了 实际上我正在使用 XAMPP 服务器开发一个小项目 大多数时候我都会遇到这个疯狂的问题 当我更改 CSS 文件中的任何内容时 它没有任何效果 但是当我重新启动我的 XAMPP apache 服务器几次时 它工作正
  • 关于C语法的几个问题

    我有几个关于 C 语法的问题 ch char malloc sizeof char strlen src 第一个括号 char 是什么意思 c getch switch c case 1 我的老师问为什么使用 这种类型 引号而不是 双引号
  • `const int a = 1;` 是 `a` 常量表达式,如果 `a` 具有自动存储期限

    N4527 5 20 表达式常量 p2 条件表达式 e 是 a核心常量表达式除非 e 的评估遵循以下规则 抽象机 1 9 将评估以下表达式之一 2 7 左值到右值的转换 4 1 除非它应用于 2 7 1 引用完整非易失性 const 的整型