chriskohlhoff / asio

Asio C++ Library
http://think-async.com/Asio
4.72k stars 1.19k forks source link

Use feature test macro for ASIO_HAS_STD_INVOKE_RESULT #1498

Open ashtum opened 1 week ago

ashtum commented 1 week ago

The existing code causes a compiler error when used with standard libraries that don't implement std::invoke_result.

    "clang++-6.0"   -fvisibility-inlines-hidden -Wno-c99-extensions -std=c++17 -stdlib=libc++ -isystem/usr/include/libcxxabi -fPIC -pthread -O0 -fno-inline -Wall -fvisibility=hidden -m64 --target=x86_64-pc-linux  -DBOOST_ALL_NO_LIB=1 -DBOOST_ASIO_DISABLE_BOOST_ARRAY=1 -DBOOST_ASIO_DISABLE_BOOST_BIND=1 -DBOOST_ASIO_DISABLE_BOOST_DATE_TIME=1 -DBOOST_ASIO_DISABLE_BOOST_REGEX=1 -DBOOST_ASIO_NO_DEPRECATED=1 -DBOOST_ASIO_SEPARATE_COMPILATION -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_BEAST_ALLOW_DEPRECATED -DBOOST_BEAST_SEPARATE_COMPILATION -DBOOST_BEAST_TESTS -DBOOST_COBALT_USE_STD_PMR=1 -DBOOST_CONTEXT_DYN_LINK=1 -DBOOST_COROUTINES_NO_DEPRECATION_WARNING=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600   -I".." -I"../libs/beast" -I"../libs/beast/test/extras/include"  -c -o "/var/boost/run/results/boost/bin.v2/libs/beast/test/beast/core/_detail_bind_continuation.test/clang-linux-6.0~c++17~lc/debug/x86_64/debug-symbols-off/threading-multi/visibility-hidden/_detail_bind_continuation.o" "../libs/beast/test/beast/core/_detail_bind_continuation.cpp"

In file included from ../libs/beast/test/beast/core/_detail_bind_continuation.cpp:11:
In file included from ../boost/beast/core/detail/bind_continuation.hpp:14:
In file included from ../boost/beast/core/detail/remap_post_to_defer.hpp:13:
In file included from ../boost/asio/is_executor.hpp:19:
In file included from ../boost/asio/detail/is_executor.hpp:19:
../boost/asio/detail/type_traits.hpp:128:37: error: unknown template name 'invoke_result'
struct result_of<F(Args...)> : std::invoke_result<F, Args...> {};
                                    ^
1 error generated.

https://www.boost.org/development/tests/develop/developer/output/teeks99-dkr-dc6-17-boost-bin-v2-libs-asio-test-any_completion_executor-test-clang-linux-6-0~c++17~lc-debug-x86_64-debug-symbols-off-threading-multi-visibility-hidden.html