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

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

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

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

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

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

委员会已经批准了一篇定义契约语法的论文,不过 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++ 的一些精彩特性,不妨关注我,一起学习!

相关推荐
IT_陈寒2 小时前
用了Proxy才发现以前的JavaScript白写了
前端·人工智能·后端
唐青枫3 小时前
别把 ArrayList 当成会自动管理内存的 List:Zig 动态数组从入门到实战
后端
鸿蒙开发3 小时前
我为 HarmonyOS 做了一个统一大模型 SDK:@hmkit/ai 正式开源
后端
猪是念来过倒3 小时前
Semaphore 与 RateLimiter:并发控制双雄详解
后端
掘金者阿豪3 小时前
异构数据同步最怕什么?不是同步慢,而是数据对不上
后端
程序员cxuan4 小时前
Claude 官方的学习教程,太强了。
人工智能·后端·程序员
老孙讲技术4 小时前
把工地遮挡和掉线接进项目部:setMessageCallback 订 alarm 与 deviceStatus
后端·物联网·音视频开发
老孙讲技术4 小时前
关店后有人进门,监控值班群却没响:用 setMessageCallback 订 human,再用 aiHuman 打开人形
后端·物联网·音视频开发
LEE4 小时前
原来 Claude Code 最厉害的工具,一行代码都不写
前端·后端
老孙讲技术4 小时前
把园区几百路摄像头收进值班台账:bindDevice 入账与 listDeviceDetailsByPage 翻页
后端·物联网·音视频开发