写点什么

元编程能力大升级!ISO 委员会完成 C++26 特性冻结

  • 2025-07-01
    北京
  • 本文字数:1275 字

    阅读完需:约 4 分钟

大小:562.83K时长:03:12
元编程能力大升级!ISO 委员会完成 C++26 特性冻结

本月早些时候,ISO C++ 委员会正式冻结了 C++26 的功能集,这标志着 C++ 的下一个主要版本迎来了一个重要里程碑。其中,编译时反射、契约、异步执行等众多备受瞩目的新特性赫然在列。

静态反射 (Static reflection) 支持在编译期对类型和行为进行自省,其目标是扩展 C++ 的元编程能力。在基础层面,反射允许开发者编写如下代码,轻松将枚举 (enum) 转换为字符串:


enum Color { red, green, blue };static_assert(enum_to_string(Color::red) == "red");
复制代码


使用反射的表层语法非常简洁,这与现代 C++ 的设计哲学保持了一致。然而, 上述功能的底层实现却要复杂得多。尽管如此,我们依然可以从中一窥反射即将解锁的强大能力:


template <typename E>    requires std::is_enum_v<E>constexpr std::string enum_to_string(E value) {    template for (constexpr auto e : std::meta::members_of(^E)) {        if (value == [:e:]) {            return std::string(std::meta::name_of(e));        }    }    return "<unnamed>";}
复制代码


反射将以一种早期形态首次亮相于 C++,并有望在未来的版本中不断演进。即便如此,它已然足够强大,足以支持一些高级用例,例如为 JavaScript 和 Python 等其他语言生成绑定。Herb Sutter 在其最新的 Trip Report 中如此描述该特性:


即便只是利用我们目前拥有的这部分初始反射能力,我们就已经可以对 C++ 类型进行反射,并利用这些信息加上普通的 std::cout,从而生成任意额外的 C++ 源代码,然后将这些新生成的代码在程序构建过程中一同编译并链接进去。


未来,利用反射,我们甚至有望通过“令牌注入”(token injection)的方式,在同一个源文件中直接生成 C++ 代码。


在最近的 ISO C++ 委员会会议上,被接纳进标准的新特性还包括:用于 Ranges 库的并行算法;旨在异步上下文中通过 RAII(资源分配即初始化)风格编程来进行资源管理的异步作用域 (async scopes);以及能为线程池提供高级执行上下文的并行调度器 (parallel scheduler)。


此前会议中已接纳的一些主要特性包括契约 (contracts)、异步执行 (asynchronous execution) 以及众多其他功能,例如:通过包索引 (pack indexing) 增强模板元编程、用于包含二进制资源的 #embed 指令、边界检查迭代器和空指针验证、SIMD 并行等等。


契约 (Contracts) 旨在通过 [[pre:]]、[[post:]] 和 contract_assert 来支持“契约式设计”。该特性原计划在 C++20 中引入,但最终从最终草案中被移除,如今它终于正式进入标准。


std::execution 提供了一套在通用执行资源上管理异步执行的机制。其核心概念是发送者 (sender) 和接收者 (receiver):发送者代表一个异步工作单元,它将其结果发送给接收者。该框架还由与异步操作相关联的状态 (state) 和一个轻量级调度器 (scheduler) 等概念共同构成。


C++26 的相关工作仍在继续,但正如 Sutter 所强调的,其完成进度比许多人预期的要快得多,目前 GCC 和 Clang 已经支持了约三分之二的已采纳语言特性。InfoQ 将持续关注并报道下一代 C++ 标准的演进过程。


原文链接:https://www.infoq.com/news/2025/06/cpp-26-feature-complete/

2025-07-01 16:307173

评论 2 条评论

发布
用户头像
还在搞元编程特性,这些功能大多数情况下都用不着。安全编程才是重点。
2025-07-02 10:19 · 广东
回复
不知道委员会咋想的,更新的特性没有和安全编程相关的。
2025-07-02 10:19 · 广东
回复
没有更多了

原型设计Axure RP 9中文授权码【Mac/win】

Rose

Axure RP 9汉化 Axure RP 9授权码 产品原型设计工具 axure rp9下载 axure rp9安装教程

Photoshop 2023 如何切换语言?

Rose

Photoshop 2023下载 如何切换PS语言 PS 2023破解

【实践篇】教你玩转JWT认证---从一个优惠券聊起 | 京东云技术团队

京东科技开发者

分布式 JWT 企业号 5 月 PK 榜

为世界第一大癌症高效研发首创新药,AI大模型助力药物研发叩开未来之门

飞桨PaddlePaddle

百度飞桨

速下载!交通业数据安全政策汇编发布

极盾科技

数据安全

VM虚拟机 v13.0.2激活版 for Mac许可秘钥

Rose

VMware Fusion Pro 13 VM虚拟机破解版 Mac虚拟机 VMware Fusion激活秘钥

什么是研发 Lead Time?我悟了!

LigaAI

DevOps 敏捷开发 研发速率 研发效能管理 企业号 5 月 PK 榜

DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

HarmonyOS开发者

HarmonyOS

常用的表格检测识别方法 - 表格区域检测方法(下)

合合技术团队

人工智能 文字识别 表格识别 表格检测

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java你猿哥

Java JVM 多线程 ssm 性能调优

为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?

思茂信息

gpu cpu 计算机 电脑 电脑硬件

MobTech 秒验|助力预热618

MobTech袤博科技

如何进行测试分析与设计-HTSM启发式测试策略模型 | 京东云技术团队

京东科技开发者

测试 测试策略 企业号 5 月 PK 榜 HTSM

「聊天机器人构建、智能文档问答」大模型应用开发实操课程来了

飞桨PaddlePaddle

AIGC Prompt

RocketMQ你不得不了解的 Rebalance机制源码分析

Java你猿哥

Java 源码 RocketMQ ssm client

全靠这份阿里大佬的“Java进阶面试手册”收获蚂蚁offer

Java你猿哥

Java kafka Spring Boot Netty java面试

龙蜥开发者说:构建软件包?不,是构建开源每一个角落!| 第 20 期

OpenAnolis小助手

开源 操作系统 龙蜥社区 开发者说 优秀贡献奖

IDO&IEO盘点,包括PoseiSwap等即将面向市场的潜力打新活动

西柚子

用好kafka,你不得不知的那些工具

JAVA旭阳

Java kafka

【5.12-5.19】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

Java性能分析工具JProfiler注册码下载

Rose

JProfiler激活码 JProfiler Mac永久激活版 Java 分析器 JProfiler中文版 JProfiler下载

【GPT-4理论篇-1】GPT-4核心技术探秘 | 京东云技术团队

京东科技开发者

人工智能 openai GPT-4 企业号 5 月 PK 榜

500行代码手写docker开篇-goland远程编译环境配置

蓝胖子的编程梦

Docker 容器 云原生 k8s 命名空间

LED显示屏技术升级方向介绍

Dylan

技术 升级 LED显示屏

上海丨阿里云 Serverless 技术实战营邀你来玩!

Serverless Devs

阿里云 Serverless 中间件

深入浅出 OkHttp 源码解析及应用实践

vivo互联网技术

okhttp 拦截器 源代码

完整版来了!阿里Dubbo技术负责人准备的源码教程,很有大厂风格

Java你猿哥

Java 架构 dubbo ssm

苹果系统更新:MacOS 11-13.x(PKG系统安装包及IPSW固件)

Rose

mac系统 macOS 13 Ventura 苹果最新系统 苹果系统下载

元编程能力大升级!ISO 委员会完成 C++26 特性冻结_编程语言_Sergio De Simone_InfoQ精选文章