打开网易新闻 查看精彩图片

210人挤在伦敦郊区开了6天会,最后干成一件事:C++26的技术活儿全干完了。这不是某个开源社区的内部狂欢,是ISO国际标准化组织的正式拍板——从这周开始,你手里的C++代码即将迎来近十年最大的一次"免费升级"。

411条意见,一条一条怼完

411条意见,一条一条怼完

今年夏天的国际评论投票(Committee Draft,CD)给委员会扔了411条各国代表的意见。6天时间,24个国家派来的130个现场代表加80个Zoom参会者,把这些问题全啃完了。没有新增功能,没有砍掉特性,全是"fit-and-finish"——修边、打磨、让标准文档能见人。

委员会主席Herb Sutter在总结里用了个挺重的词:"Rubicon"。这是条河,凯撒当年跨过去就没回头路。C++26的反射(Reflection)特性被他称为"自模板发明以来最大的升级","给了C++描述自己的能力,还能生成更多代码"。

翻译成人话:以前写C++,编译时编译器知道你的类型结构,但你不知道。现在你可以让代码在编译期"看见"自己——类有哪些成员、函数什么签名、枚举值多少——然后当场生成新代码。元编程从黑魔法变成正经工具。

Herb Sutter的原话是:「C++ handed us the keys to its own machinery.」

两大"白嫖"安全升级

两大"白嫖"安全升级

C++26有两项内存安全改进,你什么都不用改,重新编译就行。

第一,未初始化局部变量读取不再触发未定义行为(Undefined Behavior,UB)。这整类漏洞直接消失。C++以前允许编译器假设你永远不会读未初始化的变量,所以真读了的时候,编译器生成的代码可能做任何事——包括被攻击者利用。C++26把这个口子堵死了。

打开网易新闻 查看精彩图片

第二,标准库的加固版本(Hardened Standard Library)。跨平台的边界检查、更严格的迭代器验证,同样零代码改动。Herb Sutter在3月的会议报告里专门提过这事,这次伦敦会议把它 finalize 了。

反射和安全,一个是给高手发火箭发动机,一个是给所有人系安全带。两条线并行,挺典型的C++委员会风格——既要让专家能玩花的,也不能让新手太容易踩坑。

23个子组,6轨并行

23个子组,6轨并行

委员会现在有23个活跃子组,这次伦敦会议开了9个,6条轨道同时跑。有的组干满整周,有的组只开半天,看工作量。

晚上还加了三场技术夜话:编译器/库实现现状、内存安全、物理量与单位(Quantities and Units)。最后这个听着冷门,其实是给科学计算和工程领域铺基础设施——C++想在嵌入式和高性能计算里继续当老大,这些细节不能丢。

参会人数里有个细节:24个新面孔,大部分是现场来的。ISO标准会议不是闭门俱乐部,每年都在吸纳新人。只是门槛确实高——你得代表某个国家标准化机构,或者作为观察员被邀请。

反射到底能干什么

反射到底能干什么

Herb Sutter在CppCon 2025的主题演讲标题很夸张:"Reflection: C++'s decade-defining rocket engine"。但举几个例子你就知道这不是吹牛。

序列化库现在需要宏或者外部代码生成工具。有了反射,编译期直接遍历结构体成员,生成to_json/from_json。ORM、RPC stub、测试框架的自动注册,全是同类场景。

打开网易新闻 查看精彩图片

更狠的是与生成式元编程(Generative Metaprogramming)配合。C++23的if consteval、C++26的反射,加上已经提案中的注入(Injection),未来可能实现"编译期写编译期代码"。

Herb Sutter的原话:「We'll need the next decade to discover what this rocket can do.」

换句话说,反射的完整潜力,现在没人说得清。委员会只负责把发动机造出来,能飞多快、飞多远,看社区怎么玩。

时间表与落地

时间表与落地

伦敦会议是C++26技术工作的终点。接下来是DIS(Draft International Standard,国际标准草案)投票和最终编辑工作,ISO出版"在不久的将来"。

编译器方面,GCC、Clang、MSVC都在赶进度。反射这种大特性不可能等标准正式发布才开始实现,三家主流实现都有实验性支持,只是完整度和语法细节还在变。

一个现实问题:C++26的反射语法在最终定稿前调整过多次。早期用[: :]运算符,后来改成std::meta::reflect等库方式。如果你之前玩过实验版本,代码可能要改。

另一个细节:C++26没有模块(Modules)的进一步完善。模块是C++20的大特性,但工具链支持拖沓,C++26主要精力给了反射和安全,模块的痛点——编译器实现差异、构建系统集成——留到C++29再说。

210人、6天、411条意见归零,C++26的技术账本终于平账。反射这把钥匙已经递到开发者手里,问题是:你准备用它开哪扇门?