最近發布的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 狀態,可查看此頁面。