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

时间:2016-08-23 16:57:27

标签: c++ asynchronous async-await cross-platform unreal-engine4

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

此外,还有await__awaitresumableyield__yield_value)关键字在Visual Studio中突出显示。有什么区别?也许并非所有编译器都支持这些关键字或单独支持?

gccclang是否接受了?或者不接受,我可以单独为每个平台使用宏。

1 个答案:

答案 0 :(得分:26)

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标准。