asio icon indicating copy to clipboard operation
asio copied to clipboard

BOOST_ASIO_HAS_STD_FUTURE_CLASS detection bug on clang-cl

Open mark-99 opened this issue 1 year ago • 0 comments

clang-cl on Windows uses the clang compiler with the MSVC STL. In the detection logic here https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/future.hpp

__GNUC__ is true (as clang sets it) BOOST_ASIO_HAS_CLANG_LIBCXX is false (as it's MSVC STL) _GLIBCXX_HAS_GTHREADS is false (as it's not that either) So this leaves BOOST_ASIO_HAS_STD_FUTURE_CLASS undefined.

This in turn causes #include <boost/asio/packaged_task.hpp> to silently fail to define anything, and that leads to an obscure error message about incomplete types and unexpected void when trying to e.g. post a packaged_task (ie the same error message as if you try to use that functionality without including that header, as now the header is effectively empty).

Workaround is to manually define BOOST_ASIO_HAS_STD_FUTURE_CLASS.

mark-99 avatar Apr 13 '23 16:04 mark-99