是否所有的c++编译器都支持async/await关键字?

Do all C++ compilers support the async/await keywords?

本文关键字:async await 关键字 支持 c++ 编译器 是否      更新时间:2023-10-16

我想在c++ (UE4框架)中使用async/await语法,但由于跨平台代码,我不确定这是可能的…或可能吗?如果可以,我如何使用它?

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

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

asyncawait是由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标准的方向发展。