你想过在 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++ 的一些精彩特性,不妨关注我,一起学习!

相关推荐
水淹萌龙1 小时前
玩转 Go 表达式引擎:expr 实战指南
开发语言·后端·golang
Yeats_Liao2 小时前
Go Web 编程快速入门 07.4 - 模板(4):组合模板与逻辑控制
开发语言·后端·golang
咖啡教室3 小时前
每日一个计算机小知识:MAC地址
后端·网络协议
咖啡教室3 小时前
每日一个计算机小知识:LAN和WAN
后端·网络协议
咖啡教室3 小时前
每日一个计算机小知识:Socket
后端·websocket
咖啡教室3 小时前
每日一个计算机小知识:DNS和hosts文件
后端·dns
IT_陈寒3 小时前
React 19重磅前瞻:10个性能优化技巧让你少写30%的useEffect代码
前端·人工智能·后端
咖啡教室3 小时前
每日一个计算机小知识:UDP
后端·网络协议
咖啡教室3 小时前
每日一个计算机小知识:HTTP
后端·http·https
武子康3 小时前
大数据-135 ClickHouse 集群连通性自检 + 数据类型避坑实战|10 分钟跑通 ON CLUSTER
大数据·分布式·后端