zl程序教程

您现在的位置是:首页 >  后端

当前栏目

特性完成:VS2019 v16.8全面支持C++协程

C++ 支持 特性 完成 全面 协程 vs2019
2023-09-14 09:10:46 时间

一段往事

回首有关C++协程的往事,真是犹如一段十分漫长的旅程。
早在2013年,我们就官宣了一个有关”可恢复函数”的早期预览版本,接下来在2014年,我们添加了/await开关并提交了C++标准化建议的初始版本。2015年,我们提交了修订版本。后来,通过Visual Studio 2017和Visual Studio 2019,我们都在持续地跟踪有关协程TS(Technical Sepecificaion)的内容更新。2019年,随着协程完全实现被纳入到C++标准中,我们终于可以宣布了:Visual Studio 2019 v16.8将完全支持C++20协程特性。

Standard vs. TS Coroutines

最终通过标准化程序成为C++20一部分的协程支持,与早期的提议草案以及我们在/await开关下在MSVC中获得的实验版本协程有所不同。
我们在实现v16.8中的协程支持时,考虑了两个重要,但是相互矛盾的目标。
1. 提供一个严格遵循C++标准的协程实现,使得用户可以编写和使用可移植代码。
2. 确保那些使用实验版本协程的用户可以毫不费力地升级到v16.8而无需改动他们的代码。

随着提案的更改,我们会尽可能增加新的支持,而不破坏针使用早期协程版本的代码。
这当然不是标准的:它仍然接受所有旧的关键字,名称和签名,和上面的第一个目标对应。
与我们在/await下实现的原始版本相比,还存在少量的行为更改,例如一个promise对象的构建方式。这些可能导致先前可以通过编译的程序变得无法编译或表现出与之前不一样的行为。

Standard Mode – /std:c++latest