C++26 首次被国家体否决:Contracts 把标准拖进僵局
来源:herecomesthemoon.net — 2026-11-11
📋 概述
ISO C++26 的 DIS 投票没有通过,这是 C++ 历史上第一次标准草案在国家体环节被否。20 个 P-member 里只有 12 票赞成(需要三分之二),22 个成员体投出 9 张反对票(上限四分之一),另有 12 国弃权。导火索是 Contracts——用 pre/post 关键字替代 assert 的那套机制;反对者认为它语义含糊、跨翻译单元无法保证执行,支持者则在对赌对方先让步。
🔑 核心要点
- 赞成 12/20 = 60% 低于 66.66% 门槛,反对 9/22 ≈ 41% 高于 25% 上限,两道线都没过
- 争议核心是 Contracts:pre/post 条件检查,但虚函数版本早已被砍
- 同一函数的多个首次声明若契约序列不同就 IFNDR,等于无法保证检查一定会执行
- 契约里仍是普通 C++,编译器可借未定义行为把检查优化掉
- 意外的不是 Bjarne 的 Profiles——它根本没进 C++26
- 下一次 WG21 会议 2026 年 11 月 16–21 日在 Búzios,但每轮投票要数周,僵局可能拖一年
💡 金句
如果你觉得这个提案又复杂又乱,请记住,Contracts 论文本来就是按「人人能同意的最小可用版本」设计的。
← 返回 Lobsters 首页
👍 0
👎 0