Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
[ 原文发表地址 ] Trip report: Evolution Working Group at the Summer ISO C++ standards meeting (Toronto)
[ 原文作者 ] Andrew Pardoe
[ 原文发表时间 ] 2017/7/28
2017夏季ISO C++ 标准会议在7月10号到15号在多伦多大学如期举行。非常感谢Google, Codeplay 和IBM对本次会议的赞助,以及来自Mozilla,CollègeLionel-Groulx,Christie Digital Systems和Apple的帮助与组织。 当然,我们也非常感谢海滨国际在加拿大国家电视塔举办宴会。
今年在多伦多,我们有一个很有成效且相当和谐的发展工作组(EWG)。在五天三夜的会议上我们讨论了45个提案,其中周二晚上的Concepts和关于SG7的会议都是关于反思和编程研究小组的联合会议。我们大多数的人也参加了周一晚上关于P684R0, C++稳定性,速度和部署计划的会议。
C++标准委员会非常辛苦的工作,每天上午下午四小时的小型工作组讨论(如EWG)而且还要在晚上深入讨论一个课题几个小时。周六全球有约120位来自世界各地的专家参加此次闭幕会议。因为WG21成员在会议举行期间做了很多工作,所以一切都很顺利的进行。小组主席,论文作者和所有的参会人员阅读了大量的论文,并且在演讲之前做了很多讨论。在这里会议里我们做了大量的工作来改进提案:在第一次的演讲中几乎没有重要的提案被接受,正如WG21召集者Herb Sutter说”顺利的事不会偶然发生”。如果你希望事情顺利进行,那么你必须提前做好准备。
这里有每个人从第一次到有经验的参与者的许多在线出差报告。这次报告非常的集中,主要专注于EWG,在那里我是工作组的抄写员。主要把时间花在缮写上。这份报告旨在概述EWG在多伦多的工作情况,而不是对C++标准工作组进展的记录。
为所有的论文提供链接。连接服务器自动转到论文的最新版本,而不一定是当时在多伦多讨论的版本,如果你查看的论文版本较高的话(如:PxxxxR1 而不是 PxxxxR0),那应该是收纳了来自多伦多讨论的反馈之后的版本。
Concepts技术规范合并到草案标准
多伦多会议上最大的消息就是我们把Concepts TS 合并到了C++20草案标准中。这次演讲用一个马拉松式的环节把会议推向了高潮,移除了模板导入语法和“自然语法”。此提案P0696R0阐述的目标移除Concepts语法中有争议的部分,以便我们可以将TS成功合并到标准草案中。
自然语法(也称为“缩写”或“简写”语法)的主要观点是它支持泛型编程。特别是Stepanov风格的泛型编程。重在使用而不是语言本身。简化语言的使用促进良好的编程风格和规范。
经过多番讨论,小组投票删除了这两个语法,需要注意的是我们将在以后添加自然语法。提出的例子就是时候事实上我们没有包含泛型的Lambdas当我们引入Lambdas,并且引入C++11的constexpr的重大扩展。EWG致力于在未来的会议提案中提供缩写语法,理想情况下C++20完成之前。
我们就Concepts这个话题讨论了六次,这些讨论按时间顺序列出,稍后的讨论可以部分的覆盖先前讨论的决定。
推送PDTS的Modules技术规范
EWG的最大新闻就是我们在Modules TS上取得的进步如果Concepts还没有偷偷展示的话。谷歌和微软的代表谈到关于他们采用Modules和编译器实现的经验,提出了对TS措辞的澄清和修改。在闭幕会议上,我们发起Modules TS的讨论和批准投票,我们叫做PDTS。C++20的初期会增加及时抛光C++ Modules 的机会。
8个Modules的讨论:
协程( Coroutines )技术规范(两个以上)
如果将Concepts移动到C++标准草案中,将Modules移动到PDTS还不够的话,那么更多的是WG21组织也完成了对Coroutines TS,Networking TS和Ranges TS的审阅。EWG说明了关于协程TS的两个问题(CH001和US013)不是阻止将Coroutines TS合并到标准草案缺陷。详细信息,请参阅P0664R0.
C++20正在形成一个令人激动的版本!
其他晚会
除了关于Concepts的晚会之外,我们还参与了SG7晚会,研究了C++稳定性,速度和部署计划(P0684R0).
周四的第七次会议讨论了很多论文,其中包括P0670R0,P0425R0,P0707R0, 和 P0712R0。P0327R2由EWG在白天的会议中直接处理的。您可以在Herb Sutter的帖子里查看更多关于元编程的论文,元类:对生成C++的思考。
星期一晚上是讨论C++未来的话题,关于我们是否可以通过从标准中移除不推荐使用的功能来实际的破解代码。P0619R1,在EWG听到几天之后,强调了可能被删除的许多不赞成的功能。 在讨论了关于三个核心语言(而不是库更改)之后,我们决定了唯一可以删除的是throw(),它已经在三个标准被淘汰了。
提案提交到Core
本次会议期间向Core提交了四项提案。当提案转交给Core时,这就意味着EWG已经批准了设计,并要求Core审查措辞将此提案纳入标准草案。就这一点来看,可能会完成一个提案,但实际上只完成了一半。从EWG的角度来看,这是出差的结束,但是成为可以公布的标准的一部分还有很长的路要走。
下边的提案转交给了Core:
其他的一些提案已被EWG批准,但不立即发送到Core。有些则从不同的角度提交给标准库发展工作组(LEWG),从而进行更多的工作。其他人被批准去Core,但是得等到11月的阿尔伯克基会议。有关更多的信息,以及被EWG拒绝的信息,请看下文。
其它设计提案
WG21是主要的设计团队,EWG的主要任务是讨论语言应该如何演变。我们包容过,提升过,考虑过和拒绝过许多其它的建议。以下就是我们讨论过的一些列表,这些列表中排列了几个常规的主题。
宏测试
我们对未来宏的功能测试进行了三次演示: P0697R0, P0723R0和被叫做“宏功能测试且考虑有害”的演示。经过多次辩论,我们决定从现状出发做出小小的改变:有关宏功能测试的文件SD-6将仍然是WG21编写的规范,但是我们将计划在全体会议上将其作为常设文件添加到WG21.
结构化绑定 P0609R0:该提案允许在结构化绑定的成员上使用[[maybe_unused]]等属性。
内存
参数推倒,查找,类型检查,特例化
Lambda表达式
索引到位和元组类型
精确的断言和标记不可访问的代码
不鼓励的提案
一些提案,无论他们有多么的有道理和洞察力,但在当前的语言时期都不被看作是好的建议。似乎有些提案在采用时会引入太多的复杂性。其他的看起来都不适合语言。EWG不鼓励对以下的提案进行更深入的工作,除非对方案进行了根本性的改变。使其更符合大众。
结语
这是一次伟大的会议,一如既往的工作量很大。令人惊讶的是总共120人可以满足和决定任何事情,但我们确实在多伦多会议上完成了很多事情。我个人期待着我们将在11月在阿尔伯壳基举行的回忆,我们可以急需建立一个惊人的C++20版本。
和往常一样,感谢如此多的人给的反馈,并帮助我们改进VS中的C++体验。如果您对我们的团队有任何的问题或者建议,请让我们知道。我们可以通过电子邮件(visualcpp@microsoft.com)和在本文下评论,也可以通过帮助->报告产品问题。或者去开发社区反馈。你也可以找到我们的Twitter(@VisualC)和Facebook(msftvisualcpp)进行反馈。
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in