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

相关推荐
野犬寒鸦7 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈7 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
李梨同学丶9 小时前
0201好虫子周刊
后端
思想在飞肢体在追9 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
Loo国昌12 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
ONE_PUNCH_Ge12 小时前
Go 语言泛型
开发语言·后端·golang
良许Linux13 小时前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
不光头强13 小时前
spring boot项目欢迎页设置方式
java·spring boot·后端
怪兽毕设13 小时前
基于SpringBoot的选课调查系统
java·vue.js·spring boot·后端·node.js·选课调查系统
学IT的周星星13 小时前
Spring Boot Web 开发实战:第二天,从零搭个“会卖萌”的小项目
spring boot·后端·tomcat