最近发布的GCC 10 编译器已对C++20 的主要功能协程(Co-Routines)进行了初始支持,但是除非显式地开启该选项,否则并不会启用此功能。
当 GCC 10 在C++20 模式(std=c++20) 中运行时,默认情况下会启用C++ 协程。而将于明年发布的GCC 11 在 C++20 推出时将具有协程功能,到那时,GNU 编译器集合中支持 C++20 的剩余部分也应该会被解决。
协程(Coroutines)是 C++20 的主要功能之一,它允许某个函数在暂停执行之后再恢复。有关 C++ 协程的示例语法和更多详细信息请在cppreference.com上查看。可以看到,官方对协程的定义是:
A coroutine is a function that can suspend execution to be resumed later.
协程是能暂停执行以在之后恢复的函数。
与 concepts, modules, spaceship operator 和内存模型改进等一起共同构成 C++20 的主要特性。
C++20 标准在今年年初确定了技术规范后,将于近期正式发布。GCC 10 已经配备了 C++20 的大部分内容,而对于 GCC 11 来说,其余的项目很有可能将会被解决,包括像上周看到的为 std=c++20启用协程的更改。
在 C++ 标准的状态页面上,仍有面向 GCC 的 C++20 功能处于开发阶段。如果想知道 LLVM Clang 上的 C++20 状态,可查看此页面。