周一,ISO C++委员会完成了2020年的最后一次全体委员会(全体)会议,并通过了对C++23工作草案的第一次修改,包括一些新功能。
这在几个方面都是第一次:这是我们有史以来第一次通过Zoom在线举行的虚拟全体会议。这也是我们有史以来第一次全体会议,不是在长达一周的全天候密集分组会议结束时举行的;相反,它是在近9个月的虚拟分组会议结束时举行的。
当我们2月份在捷克共和国布拉格召开会议时,疫情才刚刚开始。从那时起,当然不可能亲自见面;正如我之前提到的,在另行通知之前,我们的ISO C++会议是虚拟的,但我们仍然有相同的优先事项和C++23的日程安排。
因此,自疫情开始以来,WG21小组实际上一直通过Zoom召开会议。有些小组已经召开虚拟会议多年了,但这对其他小组来说是一个重大变化,包括我们的两个主要设计小组--语言和图书馆发展工作组(EWG和LEWG)。
总体而言,自布拉格以来,我们已经举行了大约150次虚拟会议。当许多小组开会时,其中一些小组每周开会,这些会议加起来就是!
周一,我们正式采用了C++23的第一个特性,包括第一个C++23语言特性,以及一些错误修复。
首先是JeanHeyd Meneide的P0330,它为(签名的)size_t添加了一个文字后缀,因此在C++23中,我们可以编写像100uz这样的文字。(我想知道uz会不会发音为uzzi。)。请参阅JeanHeyd的论文中的许多优秀的并列示例,了解这如何帮助更安全、更方便地使用size_t,尤其是在遍历容器的裸for循环中。祝贺JeanHeyd对C++23的第一次语言扩展,也祝贺他对本文的坚持-采用的版本是修订版8,这个数字和论文的更改历史表明了将一个特性添加到C++中所需的严谨程度。非常感谢!
Wim Leflere和Paul Fee的P1679添加了一个BASIC_STRING::CONTAINS函数,这样我们就可以编写如下代码:if(str.concludes(Substr))std::cout<;<;“Found!\n”;…。我已经能听到大合唱“终于!”
Alexey Gorgurov和Antony Polukhin的P0881在C++23中添加了一个堆栈跟踪库。这是一个备受期待的基于Boost.Stacktrace的扩展,它将使可移植诊断消息更易于调试。
Juan Alday编号迷人的P1048为我们提供了一个is_scope_enum类型的特征,用于检测何时使用新样式(C++11,但它仍然是“新的”!)定义枚举。枚举类。正如这篇论文指出的那样,这对于帮助迁移特别有用,包括编写代码来检测和测量“枚举类”对普通旧“枚举”的采用。
最后,Hans Boehm的P0943支持C++中的C原子(拼写为_atom),这有助于编写在C和C++中都能工作的头文件。(采用的版本是R6,应该会在未来几周内发布。)。这是我们最近在C和C++委员会之间持续进行的额外协调的一个例子,这导致了我们做的下一件事…。
我们任命了一个新的研究小组,SG22,负责C/C++联络。这是一个独特的研究小组,因为它是由C和C++委员会共同共享的,并且它延续了两个委员会之间更密切协调的传统。感谢WG14(C)及其主席David Keaton对协调这两种语言的持续关注,感谢Aaron Ballman同意担任这个新小组的主席,感谢我们的WG14和WG21项目编辑Thomas KöPpe、JeanHeyd Meneide和Richard Smith担任助理主席。感谢大家愿意挺身而出!
感谢Richard Smith多年来作为C++标准的项目编辑所做的工作,并在本月完成了C++20!也感谢你们中的许多人帮助Richard,并通过提供PR和校对来应用全体决议来分担编辑工作量;Richard和我们所有人都非常感激这一点,特别是考虑到C++20是一个具有许多新功能的“大”版本,所有这些都为这个版本创造了异常大量的编辑工作。
从现在开始,当我们开始C++23时,Thomas KöPPE已经很有礼貌地同意担任该标准的主要项目编辑,Richard担任备用项目编辑。谢谢Thomas,再次感谢Richard和所有帮助编辑C++IS的人!
虽然我们的会议实际上是在另行通知之前,但我们将继续举行虚拟全会,就像我们本周举行的那样,正式采用新功能,因为它们在子组中取得了进展。我们的下一次虚拟全体会议将在2月份,也就是科纳会议的周一举行。
这段时间的进展将比我们面对面的时候慢,毫无疑问,我们将推迟一些真正需要面对面讨论的话题,直到我们可以安全地再次见面,但在此期间,我们将尽我们所能取得进展,我们将按时交付C++23。
再次感谢数百名不知疲倦地在C++上工作的人,即使在我们现在这个改变的世界里也是如此。您的灵活性和调整意愿受到委员会所有成员和所有C++社区的高度赞赏!谢谢,在Zoom上再见。