Visual Studio жалуется на co_await в примерах автора Boost Asio - PullRequest
0 голосов
/ 09 января 2019

Я абсолютный новичок, когда дело доходит до Boost Asio. Я играл с обратными вызовами, и все работало хорошо. Однако сейчас я пытаюсь перейти на сопрограммы, и у меня возникла проблема с co_await. В выпуске Visual Studio 2017 Community Edition написано "this co_await expression requires a suitable "await_ready" function and none was found".

Код, который я использую, является примерами автора на сайте Boost Asio. Ссылка:

https://www.boost.org/doc/libs/1_69_0/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp

Единственное изменение, которое я сделал в коде, это #define BOOST_ASIO_HAS_CO_AWAIT в самой первой строке файла.

Почему я получаю эту ошибку "this co_await expression requires a suitable "await_ready" function and none was found" при каждом появлении co_await? Авторские примеры должны работать без проблем, верно? Я пропускаю #include или что-то?

Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 09 января 2019

Спасибо Lightness Races на Orbit за предложение попробовать переключение компилятора, это была главная проблема, хотя у меня было несколько других. Если кто-то сталкивается с подобной проблемой, я предпринял следующие шаги:

  1. Переместить #define BOOST_ASIO_HAS_CO_AWAIT в заголовочный файл, в моем случае pch.h (глупая ошибка)
  2. Добавить /await переключатель в Project Properties > C/C++ > Command Line > Additional Options.

На данный момент все скомпилировано без ошибок. Тем не менее, co_await остается подчеркнутым красным, потому что:

Компилятор Intellisense еще не догнал компилятор MSVC.

Источник: https://blogs.msdn.microsoft.com/vcblog/2017/05/19/using-c-coroutines-with-boost-c-libraries/

...