我想在C ++(UE4框架)中使用async/await
语法,但由于跨平台代码,我不确定这是可能的......还是可能的?如果是,我该如何使用它?
此外,还有await
和__await
(resumable
,yield
和__yield_value
)关键字在Visual Studio中突出显示。有什么区别?也许并非所有编译器都支持这些关键字或单独支持?
gcc
,clang
是否接受了?或者不接受,我可以单独为每个平台使用宏。
答案 0 :(得分:26)
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标准。