g++10, C++20, boost 1.75.0 :: 错误: "awaitable" 尚未在 'boost::asio' 中声明



我试着从boost示例中编译示例:echo_server_with_as_single_default.cpp:

ubuntu 18.04
  • 提高1.75.0
  • g++ 10.1.0

使用以下命令编译&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主干版本一起工作了。

见这里(由于godbolt.org的执行时间限制,我不得不在main中注释掉代码)

最新更新