跳到正文
原文
Hacker News· uasi·· 13 天前精选AI 评分67

C++26 DIS 票决失败

The result of the C++26 DIS ballot

AI 摘要

C++26 草案未能通过 DIS 票决,成为首个失败的 C++ 草案,原因是投票赞成数未达三分之二(60% 对 12/20)且反对数超四分之一(41% 对 9/22),涉及反射、std::execution、库强化和契约等特性

正文 · 清洗整理版

C++26 没有通过 DIS 票决。 据我所知,这是第一个失败的 C++ 草案。 C 委员会召集人 Robert Seacord 表示,他不认为 SC22 任何语言标准以前曾经失败过投票,WG21 指导小组成员 Daveed Vandevoorde 写道,之前的 C++ 草案甚至没有得到一个反对票。 所以反射、std::execution、库强化和契约都在一个 ISO 没有批准的草案中,目前还不知道延迟多久。 投票于 2026 年 10 月 23 日结束,Robert Seacord 在第二天在领英上发布了结果。

我保持中立,投票期间不想推动任何一方。 投票结束了,所以我可以表明我的立场。 我喜欢契约这个想法,自从它们从 C++20 中移除以来我就一直想念它们。 我一直关心 API 设计、库、良好的接口和框架,这也是我加入 LEWG 的原因。 我喜欢契约的原因来自于这段经历。 检查是一个好处,也是一个好的好处:程序可以验证自己的假设。 第二个轴,我同样关心,是文档。

签名中的前置条件或后置条件记录了 API 设计者的意图,所以用户知道要期待什么以及如何使用函数,并且像 Doxygen 或 cppreference.com 这样的文档系统可以立即显示它。 评论可以表达同样的东西,但没有东西能保证它的真实性。 它可以不知不觉地偏离代码。 契约是代码的一部分。 编译器与函数一起检查它,当启用检查时,违反规则会大声失败,所以这种文档不能悄悄地过时。 概念已经为我们提供了函数接受的类型的编译时检查,契约是缺失的部分,它为运行时的值做同样的事情。

我希望在标准中看到契约,这也是为什么这次没有通过很遗憾。 我的偏好是保留它们。 如果设计因为这样变得更好,那也是一个好结果。 这不是一个抽象的问题。 我已经在我的研讨会中开始教授 C++26 契约,mp-units 使用的是 C++26 版本。 数字。 第二部分解释了 DIS 必须满足的两个条件。 草案错过了两者:要求至少三分之二的有投票资格成员赞成,20 名中有 12 名,即 60%; 要求所有投票机构中反对票不超过四分之一,22 名中有 9 名,即 41%。

20 的三分之二需要 14 票赞成,草案得到了 12 票。 22 的四分之一允许最多 5 票反对,草案得到了 9 票。 单独任何一个都足以使草案失败。 投票的国家以及如何投票。 官方结果列出了每个国家的名字。 9 个国家投了反对票:丹麦、芬兰、伊朗、意大利、日本、卢森堡、罗马尼亚、西班牙和瑞典。 每个国家都随投票发送了评论。 法国和爱尔兰弃权但也发送了评论,所以总共 11 个国家评论。 波兰和美国弃权。 我是波兰国家机构的成员。 评论本身还没有公开。

ISO/IEC 指导方针(第一部分第 2.6.5 条)要求在投票结束后 12 周内提交完整报告,包括结果、委员会主席的决定和评论的全文。 对于 10 月 23 日结束的投票,这最迟是 2027 年 1 月中旬。 在委员会草案阶段,WG21 发布了那种报告作为 N5028。 我不知道这次是否会这样做。 波兰的弃权。 波兰对 C++ 的立场由波兰标准化委员会的技术委员会 KT 331 决定。 其投票询问波兰是否应该拒绝 DIS 并向 ISO 发送技术评论。

投票没有通过,所以波兰告诉 ISO “弃权”,并且没有技术评论可以随它一起发送。 我不会分享计票或说谁如何投票。 这是内部。

来源:Hacker News · train-it.eu

00