web-dev-qa-db-ja.com

すべてのC ++コンパイラはasync / awaitキーワードをサポートしていますか?

C++(UE4フレームワーク)でasync/await構文を使用したいのですが、クロスプラットフォームコードのため、それが可能かどうかわかりません...または可能ですか?はいの場合、どうすれば使用できますか?

また、VisualStudioで強調表示されているawaitおよび__awaitresumableyieldおよび__yield_valueも)キーワードがあります。違いは何ですか?たぶん、すべてのコンパイラがこのキーワードをサポートしたり、個別にサポートしたりするわけではありませんか?

gccclangはそれを受け入れますか?または受け入れず、プラットフォームごとに個別にマクロを使用できます。

12
Artem Selivanov

asyncawaitは、Microsoftによっていくつかの改訂が提案された言語拡張ですが、現在は N4134 です。これはまだ標準に受け入れられていません。

この提案は、完全に焼き上げられておらず、焼き付けられていないため、 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html のような多くの人から反対されています。 TSで完全に調査されており、既存の言語標準内で実装できるコルーチンを提案する N3985 のような競合する提案があります。

私の知る限り、実際にasync/awaitをサポートするコンパイラはMSVisualStudioだけです。

更新として、clang 5.0は現在のドラフトコルーチン提案をサポートしています https://isocpp.org/files/papers/N4663.pdf 現在TSとして受け入れられており、 C++ 20標準への注目。

27
Charlie