асинхронный — все ли компиляторы C ++ поддерживают ключевые слова async / await?

Я хочу использовать async/await синтаксис в C ++ (UE4 framework), но из-за кроссплатформенного кода я не уверен, что это возможно … Или возможно? Если да, как я могу его использовать?

А также есть await а также __await (resumable, yield а также __yield_value также) ключевые слова, выделенные в Visual Studio. Какая разница? Может быть, не все компиляторы поддерживают эти ключевые слова или поддерживают отдельно?

gcc, clang принимает это? Или не принимает, и я могу просто использовать макросы для каждой платформы в отдельности.

9

Решение

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.

22

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]