ISO/IEC JTC1 程序

本页面非正式地总结了管理 ISO C++ 委员会的程序。如需正式和权威的讨论,请查阅当前版本的 JTC 1 指令。

工作项类型部分可能对所有 C++ 程序员都有用。其余部分是详细信息,主要对直接参与委员会流程的人员有兴趣。

ISO、IEC 和 JTC 1

您可以在手册《ISO 简介》中找到一份非常易读的 ISO 标准化概述。这是一个很好的起点,尽管它没有准确描述我们遵循的规则。

我们经常说“ISO C++”,这是正确的,但更准确地说,我们的工作是在 ISO 和 IEC 的共同框架下进行的。ISO 和 IEC 的合作方式是,它们成立了一个联合技术委员会(JTC 1,因为它是第一个)。由于 ISO 和 IEC 的规则略有不同,因此管理我们工作的规则是我们称之为 JTC 1 指令的协商妥协的结果。

这意味着我们的规则与 ISO 规则相似,但不完全相同。例如,我们在“JTC1 国家机构”之间的最高级别投票实际上是一种联合投票程序,其中三种国家机构都可以投票:JTC1 参与 (P) 成员、ISO 成员机构 (MB) 和 IEC 国家委员会 (NC)。

工作项类型

与我们相关的主要工作项有三种。

国际标准 (IS) 是经 ISO 成员国批准的最正式的共识文件,因此也需要最多的投票才能获得批准。我们有一个主要的 IS:C++ 标准本身,项目 14882。

技术规范 (TS) 是一份独立文档,包含某个独立可分离领域的技术规范内容(例如库类描述和语言特性),但该规范尚未完全准备好纳入 IS,原因可能是它仍不成熟,或者有人认为它已成熟但尚未达成共识。TS 机制允许委员会发布文档,以鼓励在将其提议为标准本身之前,在某个主题领域进行实现并积累经验;实际上,在同一领域拥有多个不同的 TS 以尝试替代方案是可能且有用的。委员会计划稳步发布 TS,从文件系统 TS 和网络 TS 开始。

注意:关于 TS 中可以或应该包含什么内容,有几个常见问题,其中大部分最好参考 JTC 1 指令的这一部分来回答

3.1.1 在以下情况和条件下,可以准备和发布技术规范。

3.1.1.1 当相关主题仍在开发中,或由于任何其他原因,未来有可能但不是立即达成协议发布国际标准时...

最后,技术报告 (TR) 更具描述性,与其说它是一种正式的规范,不如说是一篇英文论文。我们最著名的 TR 是性能 TR,它描述了在高性能代码中使用 C++ 和实现 C++ 编译器的技术主题,但这些讨论虽然是技术性的,但并没有像 TS 或 IS 中那样详细地指定具体的、可实现的内容,例如类库或语言特性。

阶段和投票

jtc1-procedures-2016.png每个工作(例如 C++ 标准本身 (IS 轨道) 或文件系统 TS (TS 轨道))都适用四个主要阶段。它们在附表中进行了总结。(每个阶段旁边的数字是《合并的 ISO/IEC 指令,第 1 部分和 JTC 1 补充》中的章节号。)

前两个阶段发生在 WG21 之上的一个级别,在 SC22(编程语言)中

  • 提案阶段只是请求一个新的工作“存储桶”——一个项目编号。提案者需要估计从开始到发布工作需要多长时间,其中三年是典型的长度。工作实际上可以提前开始,而且应该开始——ISO 强烈鼓励 NP 投票包含一份初步草案,以便国家机构能够更清楚地了解工作的大致范围。
  • 委员会阶段是第一次技术投票,也是大多数评论应该发生的阶段。这是国家机构首次有机会检查和提供关于委员会工作的反馈。投票结束后,收集评论,委员会必须处理这些评论并回复评论处理结果。

接下来的阶段发生在 JTC1 本身,再高一层

  • 查询阶段是 TS 的最后一个阶段,可能是 IS 的最后一个阶段。当委员会认为它差不多完成时,它会提供一份完整的文档作为 DIS 或 DTS 进行另一轮评论,但这次受众更广,投票期也最长。对于 IS 轨道,如果一切顺利,并且此投票返回零个反对票,那么文档将跳过最后阶段,直接作为国际标准发布。对于 TS 轨道,这始终是最后一次投票;TS 的门槛低于 IS。
  • 批准阶段仅适用于未顺利通过 DIS 投票的 IS。这是有/无投票,没有评论(反对票需要评论,但这些评论仅供委员会参考,以便它们知道在有足够多的反对票导致投票失败时需要做什么)。

结果是,一旦您的 NP 成功并且您有了项目,即使有强烈共识,您也可以在两次投票内完成甚至国际标准。

进一步阅读

欲了解更多详情,请查阅当前版本的 JTC 1 指令。