是否允许类型相同但大小不同的双关数组?

2024-03-10

类型相同但大小不同的双关数组仍然违反严格别名吗?

int arr[4];
int(&ref)[2] = reinterpret_cast<int(&)[2]>(arr);

arr[0] = 0; //write to original
ref[0]; //read from pun

我们可以这样论证:[expr.reinterpret.cast]/11 http://eel.is/c++draft/expr.reinterpret.cast#11:

类型的左值表达式T1可以转换为“引用”类型 到T2” 如果一个表达式类型为“指向T1” 可以明确地 转换为“指向的指针”类型T2“ 用一个reinterpret_cast. 结果引用与源泛左值相同的对象,但具有指定的类型。

[转换数组] http://eel.is/c++draft/conv.array:

“数组”类型的左值或右值N T” [...] 可以转换为 “指向的指针”类型的纯右值T”. 结果是一个指向 数组的第一个元素。

IE。可以说,我们有一个指针points到(不仅仅是代表其地址)第一个元素。它属于该元素的类型。从而访问ref[0]应该被定义。

按照这个逻辑,写也可以

auto& ref = reinterpret_cast<unsigned(&)[200]>(arr);
std::cout << ref[0];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否允许类型相同但大小不同的双关数组? 的相关文章

  • 使用遗留代码(使用reinterpret_cast)真的是一种很好的技术吗?

    下面的代码来自一篇关于C 面试问题的帖子here https www toptal com c plus plus interview questions 我从来不知道这种技术 尽管它声称是一种很好的技术 我的问题是 什么情况下需要使用它
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 创建一个 int 类型的随机数组。爪哇

    我需要创建一个随机的 int 数组 并按我自己的类对其进行排序 这是我制作数组的地方 public class MyProgram9 public static void main String args int list new int
  • 如何配置 Ninject 来注入 NodaTime IClock

    在我的 NinjectConfigurator 中我有 container Bind
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 绑定集合的子集

    我有一个ObservableCollection
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • C 中的 2 个字符要短

    我有2个字符 Char 128和查尔2 如何将这些字符转为 Short640 in C 我试过了 unsigned short getShort unsigned char array int offset short returnVal
  • 在 C 中运行 setuid 程序的正确方法

    我有一个权限为4750的进程 我的Linux系统中存在两个用户 root 用户和 appz 用户 该进程继承以 appz 用户身份运行的进程管理器的权限 我有两个基本惯例 void do root void int status statu
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗
  • C# 使用 .Equals() 比较两个 double

    我使用 ReShaper 当我用 比较两个双精度值时 它建议我应该使用 Math 具有公差的 ABS 方法 看 https www jetbrains com help resharper 2016 2 CompareOfFloatsByE

随机推荐

  • POST后通过REST返回内容可以吗?

    我正在使用 RESTlet 并且创建了一个资源 我通过重写处理 POSTacceptRepresentation method 客户端应该向我发送一些数据 然后我将其存储到数据库 将响应设置为 201 SUCCESS CREATED 我需要
  • 选择R中满足多个条件的数据帧索引

    我有一个数据框 我想制作满足多个条件的子集 或仅选择那些行 例如 a lt data frame a c a a b c b d b c 1 2 3 4 2 3 gt a a b 1 a 1 2 a 2 3 b 3 4 c 4 5 b 2
  • 如何防止 Firebase 身份验证用户自行更改电子邮件地址?

    根据 firebase 文档 客户端 SDK 似乎允许直接更新电子邮件地址以及用户个人资料信息 https firebase google com docs auth android manage users update a users
  • C# 获取进程的CPU使用率

    我想获取特定进程的 CPU 使用情况 这段代码 total cpu new PerformanceCounter Processor Processor Time Total 效果很好 该数字对应于 Windows 中的 CPU 使用率 数
  • 如何改变 matlab 图的线条颜色(如颜色图)?

    我有一个二维空间 其中定义了一个函数值 您可以将其视为流形 现在 我使用轮廓绘制了函数值 并将颜色图更改为比 jet 更柔和的颜色 到目前为止看起来相当不错 现在我想画一条线代表我的空间中随时间变化的状态 这也可以使用plot命令 但我想要
  • 如何跟踪 ASP.net 中的调试消息?

    简洁版本 我已经添加
  • Laravel Carbon,检索今天的日期和工作日?

    我正在使用 Carbon 将 2 个日期与今天的日期进行比较 但是我在数据库中还有另一个名为工作日的字段 其中包含以下值 莫 你 我们 所以我不仅想按日期搜索和输出 还想按工作日搜索 所以 public function show id t
  • 将 JSON 反序列化为 C# 类

    下面是我在成功创建新的 工作代码 条目后从 REST API 获得的 稍微 精简的响应 我需要将响应反序列化到某些类中 但我很困惑 作为参考 我在 NET 3 5 中使用 JSON NET 在 SQL Server 2008 R2 中的 S
  • 使用变量调用[数据库].[架构]

    我试图操纵这个现有的代码 因为在测试时 它没有引用表的确切位置 我的意思是 它不引用表的数据库名称和架构及其表名称 示例 如果该表被调用 package 那么目前它只是在更新语句 package 中输出 而不是 Holidays dbo p
  • 在 OnGroupClickListener 中获取单击的组

    如何检索在 ExpandableListView 的 OnGroupClickListener 中单击的组 我尝试过parent getItemAtPosition groupPosition 它返回组和子项 所以我想我必须将groupPo
  • WPF 中 MVVM 的项目结构

    在 WPF 中使用 MVVM 时最终得到的项目结构是什么 从我现在看到的教程来看 他们通常有文件夹 Model ViewModel 和 看法 在模型中 您可以放置 像 Person 这样的类来捕获数据 和逻辑 在 ViewModel 中 您
  • 气流:在特定时间重试

    我需要创建一个绝对需要在 9 点之前运行的 Airflow 作业 我目前有一项工作从 7 小时开始 重试 8 间隔 15 分钟 8 15m 2 小时 不幸的是 我的工作需要更多时间 因此 任务在 9 小时 硬截止日期 后失败 我怎样才能让它
  • 如何正确缩进 Django 模板

    我在 SublimeText 3 中工作 在编写 Django 模板时 我混合了 html 和函数 我喜欢缩进我的代码 以便block if和其他此类声明均缩进 例如 手动格式化 extends accounts base html blo
  • 如何将 CNF 表达式重铸为 3-CNF?

    我有一个像这样的 CNF 表达式 我想将其重新转换为 3 CNF a b c d a b d a b d 有谁知道我该怎么做 A 3 CNF https math stackexchange com questions 56369 can
  • VB.NET - Array.Contains 的替代方案?

    之前 我在 NET Framework 3 5 上使用它并且运行良好 If New String ER PM EM OC Contains Session Position Then Some codes End If 现在我正在做一个使用
  • 模板渲染期间出现异常(“块类型 sonata.Admin.block.admin_list 不存在”)

    Hi我是新来的Symfony2并在生成我的管理面板时面临这个问题 在 SonataAdminBundle Core dashboard html twig 第 35 行渲染模板期间出现异常 块类型 sonata Admin block ad
  • Java(机器人)屏幕截图超出可见范围

    我想立即截取比我的屏幕大的整个网站的屏幕截图 我知道如何使用 Robot 类来截取可见区域的屏幕截图 我认为这样做的一种方法是 启动浏览器 进入所需网站 启动我的程序 程序将截取可见区域的屏幕截图 程序将向下滚动以使页面的后半部分可见并截取
  • EF 4.1 Code First 和现有数据库以及 .NET 成员资格

    我的开发盒上有一个名为 ApplicationName Development 的数据库在 SQL Server 2008 R2 Developer 版本上运行 我将 NET 成员资格表添加到数据库中没有任何问题 当我尝试让 Code Fi
  • 我想删除 HTML 空白

    我有一个新问题困扰着我 我正在制作一个网页 我希望在不滚动的情况下进行修复 最重要的是我希望我的主 Div 填满我的所有可用空间 我做了这个代码
  • 是否允许类型相同但大小不同的双关数组?

    类型相同但大小不同的双关数组仍然违反严格别名吗 int arr 4 int ref 2 reinterpret cast