所有C++编译器都支持async/await关键字吗?

Art*_*nov 12 c++ asynchronous cross-platform async-await unreal-engine4

我想async/await在C++(UE4框架)中使用语法,但由于跨平台代码,我不确定是否可能......或者可能?如果是,我该如何使用它?

也有await__await(resumable,yield__yield_value也)在Visual Studio中突出显示的关键字.有什么区别?也许不是所有的编译器都支持这个关键字或单独支持?

gcc,clang是接受吗?或者不接受,我可以单独为每个平台使用宏.

Cha*_*lie 27

async并且await是Microsoft提出的语言扩展,有几个版本,但目前是N4134.这还没有被接受进入标准.

该提案遭到许多人的反对,例如http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html,因为没有完全烘焙并且没有在TS中完全探索过有像N3985这样的竞争性提案,它提出了可以在现有语言标准内实现的协同程序.

据我所知,实际支持async/await的唯一编译器是MS Visual Studio.

作为更新,clang 5.0支持当前的协同例程提案https://isocpp.org/files/papers/N4663.pdf,该提案现已被接受为TS并且正在着眼于C++ 20标准.

  • @AbhijeetNagre您可以成为主题专家,只需知道在哪里寻找建议,订阅wg21邮件列表以及跟踪gcc / clang更改日志即可。 (2认同)