Hi
I have been experimenting with some C++20 concepts code. Currently, I
have a program which uses beast and asio to do some network file
transfers. I was thinking of adding a small piece of code to my code
which includes a concept.
Prior to doing this, I tried building the beast tests from the 1.72
version with concepts enabled in the compiler. I got lots of errors
such as the one below.
beast/http/write.cpp:313:44: error: use of ‘auto
boost::beast::http::async_write(AsyncWriteStream&, const
boost::beast::http::message&, WriteHandler&&,
typename std::enable_if<(!
boost::beast::http::is_mutable_body_writer<Body>::value)>::type*) [with
AsyncWriteStream = boost::beast::test::stream; bool isRequest = false;
Body = boost::beast::http::basic_string_body<char>; Fields =
boost::beast::http::basic_fields; WriteHandler =
boost::asio::basic_yield_context >; typename std::enable_if<(!
boost::beast::http::is_mutable_body_writer<Body>::value)>::type = void]’
before deduction of ‘auto’
313 | async_write(ts, m, do_yield[ec]);
| ^
Are beast and asio not concepts ready? Or am I missing something? Is
there some flag I need to set?
My set up:
boost: 1.72
gcc: 9.3
I added -std=c++2a -fconcepts to compile flags in my user-config.jam
file to enable compiler concepts support.
I have no problems using these compiler flags with other non-boost code.
Thanks