asio
asio copied to clipboard
Asio from Boost 1.86.0 fails to build with C++20 w/o concepts
When porting my software to boost 1.86.0, I found a strange error that I narrowed down to the following example.
test.cpp:
#include <boost/asio.hpp>
int main() { return 0; }
$ g++ -DBOOST_ASIO_DISABLE_CONCEPTS -std=c++20 test.cpp
In file included from /usr/include/boost/asio.hpp:69,
from test.cpp:2:
/usr/include/boost/asio/co_composed.hpp:849:13: error: ‘async_operation’ has not been declared
849 | template <async_operation Op>
| ^~~~~~~~~~~~~~~
/usr/include/boost/asio/co_composed.hpp:850:24: error: ‘Op’ has not been declared
850 | auto await_transform(Op&& op
| ^~
[... and a few more errors, as compiler does not now what Op is]
I'm using x86_64 linux, gcc 13.2.1.
I see a similar error with clang 18.1.8.
If I drop -DBOOST_ASIO_DISABLE_CONCEPTS or standard specification, the code compiles just fine.