你想过在 C++ 中使用契约和反射特性吗?

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/fOEG22dQqKSpsZmk8z6w6g

ISO/IEC C++ 技术委员会主持人 Herb Sutter 报告称,C++26 将具有新的功能,包括契约和反射。

该委员会上周在夏威夷科纳举行了第二次会议,以确定即将出台的新标准,该委员会的目标是在这个过程的早期批准尽可能多的功能。

C++ 以三年为一个周期进行更新,尽管 C++23 仍处于退出最终投票的状态,但 C++26 的审议工作已经开始顺利进行。

契约(contracts )是一种通过契约实现设计(design by contract)的语言特性,其中类方法定义了调用方法的先决条件、结果的后决条件以及类成员的有效状态,Bertrand Meyer 在 80 年代中期首次为 Eiffel 语言采用了这种方法,自那以后影响了其他语言。

Bertrand Meyer

委员会已经批准了一篇定义契约语法的论文,不过 Sutter 提醒还有一些设计问题需要决定,尤其是隐式 lambda 捕获、consteval 和多个声明的语义等。

反射是进程在运行时内省自身类型和行为的能力。C# 和 Java 等语言都已经支持反射,但 C++ 目前的标准还不支持。上周 C++ 委员会一致通过了一项在 C++26 中添加静态反射的提案,作为静态反射的核心,它足以解决许多重要问题,同时让我们也计划在 C++26 之后继续在它的基础上进一步发展,我们迫切需要 C++ 中的反射。

其他进展的功能包括:

  • 基于 C++ 标准库中的基本线性代数子程序(BLAS)的稠密线性代数。
  • 用于调试支持的标准 API,如 std:breakpoint()。
  • SIMD(单指令,多数据)并行性。
  • C++ 的发明者 Bjarne Stroustrup 提出的 C++ 安全建议。

作为 CPP 长期使用者,八戒一直同意 C++ 在编程语言中占据着不同寻常的地位,它被广泛使用,但也经常被指责不安全、过于复杂和缺乏现代功能,所以 C++ 的突破势在必行了。

Herb Sutter 自己也有一个名为 Cppfront 的实验项目,其目标是探索是否有一种方法可以让 C++ 本身变得更简单、更安全、更具工具性。

另外,谷歌也赞助了另一项名为 Carbon 的实验。

这些尝试活动中,关键问题是如何在保持与现有代码的兼容性的同时进行改进。

可预见的是,反射和契约等特性极大可能会受到 C++ 社区的热烈欢迎;然而,这些新特性的出现(也就是说,在即将发布的 C++26 中)也表明了,虽然 C++ 很复杂,但它已经落后于其他语言,知落后而直追的味道。

但,相信绝大部分的 CPPer 连 C++ 11 这样的“现代”版本都还未熟悉,就要开始思考怎么学习 C++ 26 了。

八戒之前也写过一些新特性入门讲解,如果你有兴趣学习现代版 C++ 的一些精彩特性,不妨关注我,一起学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java异常简单介绍

文章目录 1. 异常分类和关键字1.1 分类1.2 关键字 2. Error2.1 Error定义2.2 常见的Error2.2.1 VirtualMachineError2.2.2 ThreadDeath2.2.3 LinkageError2.2.4 AssertionError2.2.5 InternalError2.2.6 OutOfMemoryError2.2.6.1 OOM原因2.2.6.2 OutOfMemoryError会导致宕机吗 …

大创项目推荐 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…

LeetCode刷题--- 解码方法

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

Spring中的依赖注入(DI)的几种方法的使用

文章目录 Spring中的依赖注入(DI)的几种方法的使用1、构造函数注入业务层实现类application.xml 2、set方法注入业务层实现类application.xml 3、自动注入业务层实现类application.xml 4、注入集合类型的属性业务层实现类application.xml 测试类 Spring中…

ARM CCA机密计算架构软件栈之Realm资源管理

领域资源管理的基本原则是主机保持控制。这意味着主机决定使用哪个物理内存来支持给定的领域中间物理地址(IPA),或者存储RMM使用的Realm元数据的给定片段。 主机始终可以重新获取此物理内存,而无需得到领域的同意。同样&#xff…

JavaScript基本使用方法

JavaScript 是一种用于在网页上添加交互性和动态功能的脚本语言。下面是 JavaScript 的基本使用方法&#xff1a; 1.内嵌方式&#xff1a; • 在 HTML 文件中使用 <script> 标签来嵌入 JavaScript 代码。 • 可以在 <script> 标签内部编写 JavaScript 代码&#…

Leetcode算法系列| 11. 盛最多水的容器

目录 1.题目2.题解C# 解法一&#xff1a;暴力C# 解法二&#xff1a;双指针&#xff08;左指针大于右指针&#xff0c;left&#xff09;C# 解法三&#xff1a;双指针优化&#xff08;左指针小于等于最小高度&#xff0c;left&#xff09;Java 解法一&#xff1a;双指针Python3 解…

经常使用耳机对耳朵听力有影响吗?戴哪种耳机不伤耳朵听力?

经常使用耳机容易引起末梢感受器官受损&#xff0c;可能造成内耳功能损伤&#xff0c;出现耳聋、耳鸣等听力的适应性下降的症状&#xff0c;建议使用耳机时间不要过长&#xff0c;并且音量不要过大。如果想保护听力的话&#xff0c;建议选择骨传导耳机&#xff0c;骨传导耳机通…

【Delphi 基础知识 12】覆盖函数的使用

在Delphi中&#xff0c;使用关键字override可以覆盖&#xff08;override&#xff09;父类中的虚方法。以下是一个简单的覆盖函数的例子&#xff1a; unit OverrideExample;interfaceusesSysUtils;type// 父类TShape classprocedure Draw; virtual;end;// 子类TCircle class…

单片机快速入门

参考连接&#xff1a; 安装MinGW-64&#xff08;在win10上搭建C/C开发环境&#xff09;https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接&#xff1a;https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码&#xff1a;y1mz --来自百度网盘超级会员V7的分享C…

rotate-captcha-crack项目重新训练百度旋转验证码角度预测模型

参考&#xff1a; building-powerful-image-classification-models-using-very-little-data.html https://github.com/Starry-OvO/rotate-captcha-crack &#xff08;主&#xff09;作者思路&#xff1a;https://www.52pojie.cn/thread-1754224-1-1.html 纠正 新版百度、百家…

低成本总线技术——LIN总线协议规范介绍

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”&#xff0c;即可获得canoe入门到精通电子书和INCA软件安装包&#xff08;不带授权码&#xff09;下载地址。 本篇文章主要介绍LIN总线协议规范。 数据帧的结构 LIN的数据帧包括报头&#xff0c;响应两大部分。而报头…

Visual Studio 2013 “即将退休”

新年快乐&#xff01; 这也是向各位开发者提醒 Visual Studio 支持生命周期中即将到来的好时机。 对 Visual Studio 2013 的支持即将在今年(2024年)的4月9日结束。如果你正在使用旧版本的 Visual Studio&#xff0c;我们强烈建议您升级您的开发环境到最新的 Visual Studio 20…

浏览器是如何渲染页面的

浏览器是个极其复杂的程序&#xff0c;这里只是挑几个和前端息息相关的重要内容来说 在学习如何渲染之前需要知道一个浏览器浏览器会有多个进程&#xff0c;其中主要进程有浏览器进程&#xff0c;网络进程&#xff0c;渲染进程这里我们主要学习内容就发生在渲染进程。当渲染进程…

实现鼠标悬停显示书名、作者和价格的悬浮提示框功能

在开发在线书店网站的过程中&#xff0c;提供一个直观且用户友好的界面对于吸引和留住客户至关重要。其中一个能有效提升用户体验的功能是在用户将鼠标悬停在书封面上时&#xff0c;显示包含书名、作者和价格的悬浮提示框。这不仅为用户提供了即时信息&#xff0c;还增加了界面…

闭包(js的问题)

闭包的概念Closure&#xff1a;作用域 引用了自由变量的函数&#xff0c;这个被引用的自由变量将和这个函数一同存在&#xff1b; 即使已经离开了创造它的环境也不例外。 所以&#xff0c;闭包是由函数和其他相关的引用环境组合而成&#xff0c;实现信息驻留&#xff1b; 信…

如何在powershell查看.jar文件的java编译版本

整体过程 总的流程如下&#xff1a; 1. 获取.jar文件的绝对地址&#xff0c;即$JarPath $JarPath 2. 选择.jar文件任意一个类&#xff0c;即$ClassName $ClassName 3. 使用以下命令找到major字段跟着数字&#xff0c;即 javap -verbose -cp $JarPath $ClassName | S…

【解决openGauss无法使用gs_check等服务器端命令问题】

【解决openGauss无法使用gs_check等服务器端命令问题】 一、问题描述二、问题原因三、解决方法 一、问题描述 [ommopengauss03 ~]$ gs_check -i CheckCPU Parsing the check items config file successfully [GAUSS-53026]: ERROR: Execute SSH command on host 192.168.56.19…

给出一句话来描述想要的图片,就能从图库中搜出来符合要求的

介绍 地址&#xff1a;https://github.com/mazzzystar/Queryable The open-source code of Queryable, an iOS app, leverages the OpenAIs CLIP model to conduct offline searches in the Photos album. Unlike the category-based search model built into the iOS Photos…

项目使用PowerJob

新一代的定时任务框架——PowerJob 简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#xff0c;与xxl-job一样&#xff0c;基于web页面实现任务调度配置与记录&#xff0c;使用简单&#xff0c;上手快速&#xff0c;其主要功能特性如下&#xff1a; 使用简单&…