左值整型常量表达式是常量表达式吗?

2023-12-09

N4527 5.20 [表达式常量]p3

An 积分常量表达式是整型或无范围枚举类型的表达式,隐式转换为纯右值,其中转换后的表达式是核心常量表达式。

5.20 [expr.const]p5

A 常量表达式是一个泛左值核心常量表达式,其值引用作为常量表达式(如下定义)的允许结果的实体,或者是一个纯右值核心常量表达式,其 value 是一个对象,其中对于该对象及其子对象:

(5.1) — 引用类型的每个非静态数据成员指的是一个常量允许结果的实体 表达,以及

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

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

void foo(){
    const int a = 1;//a has automatic storage duration
    // all ok in gcc 5.1.0 and clang 3.8.0
    int b[a]{};
    static_assert(a,"");
    switch(1){
      case a:
        ;
    }
}

问题1:是a an 积分常量表达式?

问题2:是a a 常量表达式?

问题3:左值整型常量表达式是常量表达式吗?

问题4:

如果问题3的答案是肯定的, 如果对象具有自动存储期限,这与 5.20 p3 冲突吗?


Is a积分常量表达式?

在以下情况下:

int b[a]{};
static_assert(a,"");
switch(1){
  case a:
    ;
}

yes, a是一个整型常量表达式。从你的第一句话开始:

整型常量表达式是整型或无作用域枚举类型的表达式,隐式转换 到纯右值,其中转换后的表达式是核心常量表达式。

'a' 是一个整型,在你的情况下它将被隐式转换为纯右值,所以现在是a核心常量表达式?是的,如果我们回到第 2 段,它定义了什么不是核心常量表达式:

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

它有以下条款:

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

但以下情况除外:

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

这适用于a因为它是非易失性的,所以是 const 并用常量表达式初始化。


Is a常量表达式?

在与上面相同的上下文中,是的,因为我们可以从上面的引用中看到它是一个核心常量表达式。


左值整型常量表达式是常量表达式吗?

不,为了使其成为整型常量表达式,必须将其转换为纯右值,因此不能是左值。

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

左值整型常量表达式是常量表达式吗? 的相关文章

  • C# 从带引号的字符串中删除分隔符

    我正在编写一个程序 必须从文本文件中带引号的字符串中删除分隔符 例如 Hello my name is world 必须 Hello my name is world 起初这听起来很简单 我认为是这样 但是您需要检测引号何时开始 何时结束
  • 在 MS word .docs 中插入 MathMl 、 Tex 或 LaTex 方程?

    我一直在寻找 C 中 Net 的一些 dll 用于在 MS Word 中插入任何 MathMl Tex 或 LaTex 方程 我尝试了一些类似 DocX 的工具 但它们失败了 你知道吗 或任何提示如何做到这一点 谢谢 Word 2007 可
  • 未定义的参考错误 - rand

    我正在创建一个命令行 C 测试应用程序 可执行 以便在我的 root Android 设备上运行 该可执行文件使用多个预构建的 C 库 其中之一使用 rand 在链接状态期间我收到错误 rand 的未定义引用 为了检查路径是否设置正确 我尝
  • 在 Linux 上,在 Eclipse CDT 中使用 gdb 调试 C++ 应用程序,如何向 stdin 输入内容?

    在 Linux 上 我尝试在 Eclipse CDT 中使用 gdb 调试 C 应用程序 例如应用程序applic exe接受一些命令行参数arg1 and arg2它期望一些数据stdin 比如说 取自文件input txt 通常 要在控
  • 使用 C# 使用证书进行 SSL 客户端身份验证

    我需要创建一个 C 应用程序 该应用程序必须使用 SSL 向服务器发送 API 请求 我需要创建客户端身份验证 我已经拥有服务器 CA 证书 客户端证书 cer 客户端私钥 pem 和密码 我找不到有关如何创建客户端连接的示例 有人可以建议
  • C# 中具有字符串键类型的不区分大小写字典

    如果我有一个Dictionary
  • unique_ptr需要存储删除器怎么可能没有开销呢?

    先看看C Primer讲了什么unique ptr and shared ptr 16 1 6 美元 效率和灵活性 我们可以确定的是shared ptr不将删除者视为直接成员 因为删除器的类型直到运行时才知道 因为删除器的类型是a类型的一部
  • 如何在 VS 2013 的立即窗口中执行 LINQ 和/或 foreach?

    在调试过程中探测当前状态时 立即窗口是非常有用的工具 我了解到 通过使用问号 人们可以在那里做更多的事情 如图所示在这篇文章中 https stackoverflow com questions 32934635 execute metho
  • 如何从 nuget 包中排除子目录和内容

    所以我有一个网站正在尝试打包用于 Octopus Deploy 我有以下文件夹结构 Web Views WantThis Dontwantthis WantThis1 WantThis2 lots more Scripts 我试图排除 Do
  • 根据值更改 DataGrid 单元格颜色

    我有一个 WPF 数据网格 我想要根据值使用不同的单元格颜色 我的 xaml 上有以下代码 Style TargetType DataGridCell 但不是只选择一个单元格而是选择所有行 我缺少什么 如果您尝试设置DataGrid Cel
  • 重写 ASP.Net Core 中的 415 响应

    在 ASP net Core 2 1 中 我想返回 Json 响应以及状态代码 415 而不是默认返回的 415 为了实现这一点 我使用资源过滤器 public class MediaTypeResouceFilter Attribute
  • WPF:BinaryFormatter 可以序列化 FlowDocument 实例吗?

    我喜欢使用binaryformatter来序列化流文档 但这是例外 Serializable public class BinFlow public FlowDocument my get set BinFlow myBF new BinF
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • const int 列表而不是 enum

    我开始研究大型 C 代码库 并发现使用带有多个 const ints 字段的静态类 这个类的行为与枚举完全一样 我想将类转换为实际的枚举 但权力被拒绝 我想转换它的主要原因是这样我可以将枚举作为数据类型而不是 int 这对可读性有很大帮助
  • 如何将 Activator.CreateInstance 与字符串一起使用?

    在我的反射代码中 我的通用代码部分遇到了问题 特别是当我使用字符串时 var oVal object Test var oType oVal GetType var sz Activator CreateInstance oType oVa
  • 是否有在 Windows 窗体应用程序中以最少的设置使用 CefGlue 或 CefSharp 的示例?

    我 仍然 使用 Visual Studio 2005 并希望将 webkit 浏览器嵌入到 c winforms 应用程序中 最好作为 winforms 控件 我正在寻找 CefGlue 或 CefSharp 的简单示例以及所需的最少 dl
  • 什么时候适合在 C++ 中使用 static(在未命名的命名空间上)?

    我一整天都在阅读有关未命名命名空间的文章 大多数文章都解释了何时应该在 static 关键字上使用未命名命名空间 但我仍然有一个大问题什么时候适合使用静态 毕竟它还没有完全弃用 那么带有静态函数的头文件我现在应该将它们放入未命名的命名空间中
  • 将base64字符串转换为图像c#时出错

    我想在我的网页上显示图像 并单击应该下载的链接按钮 存储的图像文件以二进制格式存储在db中 将 base64 字符串转换为图像时显示错误 详细信息如下 帮助我找到合适的解决方案 谢谢 Error Code protected void Pa
  • 同时运行 x 个网络请求

    我们公司有一个网络服务 我想通过我自己的服务发送 XML 文件 存储在我的驱动器上 HTTPWebRequestC 中的客户端 这已经有效了 Web服务同时支持5个同步请求 一旦服务器上的处理完成 我就会从Web服务获得响应 每个请求的处理
  • Fluent Validation 将 CustomAsync 更改为 MustAsync

    有人可以帮我解决这个问题吗 我正在努力改变CustomAsync 到 MustAsync 但我无法让事情发挥作用 下面是我的自定义方法 RuleFor o gt o MustAsync o gt return CheckIdNumberAl

随机推荐

  • 如何使用 PowerShell 删除用户配置文件

    我有下面的脚本 如果我取消注释该行 3 我收到错误 Exception calling Delete with 0 argument s At Z Scripts Powershell Remove UserProfile ps1 48 c
  • 适用于 Android 的 catmull-rom 样条线

    我正在尝试找到一种在android平台上实现catmull rom样条线的方法 以便通过n个点平滑地绘制一条线 理想情况下 我能够通过 Path 及其cubicTo 方法调整三次贝塞尔曲线 如本线程中提到的 如何在 Android 中通过树
  • 如何列出目录中的所有子目录

    我正在开发一个项目 我需要列出目录中的所有子目录 例如 如何列出驱动器 C 中的所有子目录 Use Directory GetDirectories获取指定目录的子目录 你的目录路径 结果是一个字符串数组 var directories D
  • 我怎样才能忽略超类?

    我正在尝试编写一个网络服务java util loggingAPI 所以我写了一个继承自LogRecord的类MyLogRecord 我用JAX B注释对这个类进行了注释 包括 XmlAccessorType XmlAccessType N
  • 从纬度、经度转换为 x、y

    我想将 GPS 位置 纬度 经度 转换为 x y 坐标 我找到了很多关于这个主题的链接并应用了它 但它没有给我正确的答案 我按照以下步骤来测试答案 1 首先 我取两个位置并使用地图计算它们之间的距离 2 然后将这两个位置转换为x y坐标 3
  • 如何在 Django 中设置自定义中间件?

    我正在尝试创建一个中间件 以选择性地将 kwarg 传递给满足条件的每个视图 问题是我找不到如何设置中间件的示例 我见过重写我想要的方法的类 process view Class CheckConditionMiddleware objec
  • jpa如何创建与父实体具有相同id的新实体(联合继承)

    我的问题非常类似于更改保留其 ID 的实体的类型 但我使用 InheritanceType JOINED 而不是 Table per class 这意味着我不更改任何表 只是创建一个新的子类 其 id 与超类相同 总而言之 我有一个 Per
  • 如何在用户表单列表框中显示过滤后的行

    我在用户窗体中有一个 Excel 工作表和一个列表框 当我通过单击用户窗体上的按钮来过滤工作表并更新列表框时 我会看到列表框中的所有行 我的意思是 listbox1 显示所有单元格 过滤器 无过滤器 我的更新列表框的代码 Private S
  • 组合框控件模板下拉按钮

    我想知道是否有人有一个示例 说明如何设置组合框的样式 模板以仅在默认初始状态下显示按钮 有点像功能区栏的 DropDownButton 库 我只希望用户能够单击按钮并列出组合框项目 做出选择后 它不会将所选项目保存在文本字段中 因为没有文本
  • h2o 模型列出每个特征的 dtypes

    有没有一种方法可以列出现有 h2o 模型的每个特征的预期数据类型 而无需查看训练数据 类似于的输出h2o frame types 但不查看训练数据 只查看模型对象 在本例中 我有一个已保存的模型文件 可以导入回 h2o 的通用类型 而不是
  • HTTPS 通信失败 ABAP

    我正在开发一个应连接到两个 Web 应用程序的应用程序 第一个 Web 应用程序已完成 http example com 不幸的是 第二个 Web 应用程序使用 HTTPS https example com 抛出这个错误 Http Com
  • Android java使用Comparable自定义排序

    Override public int compareTo final myRow another final int BEFORE 1 final int EQUAL 0 final int AFTER 1 if this another
  • 如何使用 matplotlib 在单个页面上绘制多个绘图?

    我编写了一次打开 16 个数字的代码 目前 它们都作为单独的图表打开 我希望他们在同一页面上打开所有内容 不是同一个图表 我想要在单个页面 窗口上显示 16 个独立的图表 此外 由于某种原因 numbins 和 defaultreallim
  • 按类别名称搜索

    当我尝试按类别名称进行搜索时 它什么也没有返回 例如 我有有机 独特 体育等类别 在搜索中我输入独特 但我没有得到任何结果 不幸的是 Magento 的默认搜索功能是产品搜索 并且仅限于该范围 当您搜索 Unique 时 它会查找产品名称
  • Reporting Services 表达式在某些情况下会出错

    在报告的摘要行中计算平均值时出现错误 我的表情是这样的 IIF SUM Fields column3 Value gt 0 Format DateAdd s SUM Fields column4 Value SUM Fields colum
  • 在pygame中检查歌曲是否播放完毕

    有什么方法可以判断 pygame 中的歌曲是否已播放完毕 这是代码 from tkinter import import pygame root Tk pygame init def play pygame mixer music load
  • Visual Studio 2010 局部变量历史记录

    我正在调试一个具有多个嵌套循环的进程 这些循环会更改几个不同的局部变量 我可以通过一次迭代一次来观看这些内容 但这非常乏味 而且我正在忘记自己的位置 我根本没有时间每次都记下每个变量 有没有办法可以查看局部变量的历史记录 一个插件 如果没有
  • 在 xsl 变量中存储 html 标签

    抱歉 如果这是一个愚蠢的问题 但是可以在 xsl 1 0 变量中存储和检索 HTML 片段吗 例如
  • 在 Vagrant 配置期间使用 Sed 将行追加到文件

    我目前正在使用Vagrant设置运行 Ubuntu 的开发机器 我想在我的中添加几行 profile将目录添加到我的 PATH变量 使用sed 为此 我将这些行添加到我的机器中Vagrantfile config vm provision
  • 左值整型常量表达式是常量表达式吗?

    N4527 5 20 表达式常量 p3 An 积分常量表达式是整型或无范围枚举类型的表达式 隐式转换为纯右值 其中转换后的表达式是核心常量表达式 5 20 expr const p5 A 常量表达式是一个泛左值核心常量表达式 其值引用作为常