g++10, C++20, boost 1.75.0 :: error: 'awaitable' has not been declared in 'boost::asio'

g++10, C++20, boost 1.75.0 :: error: 'awaitable' has not been declared in 'boost::asio'

我尝试编译示例:echo_server_with_as_single_default.cpp 来自 boost 个示例:

使用以下命令编译&link(我知道这不是最优的,我重用了我正在处理的另一个项目中的 makefile):

g++ -MT bin/.o/src/main.o -MD -MP -MF bin/.d/src/main.d -std=c++20 -Isrc -Ilib/ -g -Wfatal-errors -c -o bin/.o/src/main.o src/main.cpp
g++ -o bin/server bin/.o/src/main.o  -lpthread -lrt -lboost_system -lboost_thread -lboost_chrono -lboost_context -lboost_coroutine -DBOOST_COROUTINES_NO_DEPRECATION_WARNING

我收到以下错误:

我尝试了不同的组合,但我遗漏了一些东西。有帮助吗?

error: 'awaitable' has not been declared in 'boost::asio'
   22 | using boost::asio::awaitable;

目前,gcc 默认不启用协程。您需要传递 -fcoroutines 编译器开关才能启用它们。这可能很快就会改变,因为它已经适用于当前的 gcc trunk 版本。

参见here(由于godbolt.org中的执行时间上限,我不得不注释掉main中的代码)。