asio icon indicating copy to clipboard operation
asio copied to clipboard

Asio from Boost 1.86.0 fails to build with C++20 w/o concepts

Open iv-m opened this issue 1 year ago • 0 comments

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.

iv-m avatar Oct 19 '24 10:10 iv-m