你想过在 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 小时前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端
栈与堆1 小时前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust
superman超哥2 小时前
双端迭代器(DoubleEndedIterator):Rust双向遍历的优雅实现
开发语言·后端·rust·双端迭代器·rust双向遍历
1二山似2 小时前
crmeb多商户启动swoole时报‘加密文件丢失’
后端·swoole
马卡巴卡2 小时前
Java CompletableFuture 接口与原理详解
后端
神奇小汤圆2 小时前
Java线程协作工具:CountDownLatch 、CyclicBarrier、Phaser、Semaphore 、Exchanger
后端
gelald2 小时前
ReentrantLock 学习笔记
java·后端
计算机学姐2 小时前
基于SpringBoot的校园资源共享系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·spring·信息可视化
J_liaty2 小时前
RabbitMQ面试题终极指南
开发语言·后端·面试·rabbitmq
BD_Marathon3 小时前
SpringBoot程序快速启动
java·spring boot·后端