The following snipped causes the compilation error in the title, when compiling with the NVidia 25.11 compiler -- works fine with GCC and Clang. The issue occurs with both 1.90.0 and 1.91.0 releases.
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
int main() {
using io_context_t = boost::asio::io_context;
using ssl_context_t = boost::asio::ssl::context;
using ssl_socket_t = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>;
auto io = io_context_t{};
auto ssl = boost::asio::ssl::context{boost::asio::ssl::context::tlsv13};
auto socket = ssl_socket_t{io, ssl};
auto resolver = boost::asio::ip::tcp::resolver(socket.get_executor());
auto endpoints = resolver.resolve("host", "8888");
auto endpoint = endpoints.begin();
socket.lowest_layer().async_connect(*endpoint, [](const boost::system::error_code&) { /* ... */ });
}
"/.../deps/boost_1.90.0__nvidia/include/boost/asio/detail/type_traits.hpp", line 145: error: class "boost::asio::result_of<boost::asio::any_io_executor ()>" has no member "type"
using result_of_t = typename result_of<T>::type;
^
detected during:
instantiation of type "boost::asio::result_of_t<boost::asio::any_io_executor ()>" at line 46 of "/.../deps/boost_1.90.0__nvidia/include/boost/asio/detail/work_dispatcher.hpp"
instantiation of class "boost::asio::detail::work_result<Function> [with Function=const boost::asio::any_io_executor &]" at line 1885 of "/.../deps/boost_1.90.0__nvidia/include/boost/asio/basic_socket.hpp"
instantiation of "void boost::asio::basic_socket<Protocol, Executor>::initiate_async_connect::operator()(ConnectHandler &&, const boost::asio::basic_socket<Protocol, Executor>::endpoint_type &, const boost::system::error_code &) const [with Protocol=boost::asio::ip::tcp, Executor=boost::asio::any_io_executor, ConnectHandler=lambda [](const boost::system::error_code &)->void]" at line 331 of "/.../deps/boost_1.90.0__nvidia/include/boost/asio/async_result.hpp"
instantiation of "boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures...>::return_type boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures...>::initiate(Initiation &&, RawCompletionToken &&, Args &&...) [with CompletionToken=lambda [](const boost::system::error_code &)->void, Signatures=<void (boost::system::error_code)>, Initiation=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor>::initiate_async_connect, RawCompletionToken=lambda [](const boost::system::error_code &)->void, Args=<const boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> &, boost::system::error_code &>]" at line 685 of "/.../deps/boost_1.90.0__nvidia/include/boost/asio/async_result.hpp"
instantiation of "auto boost::asio::async_initiate<CompletionToken,Signatures...,Initiation,Args...>(Initiation &&, boost::asio::type_identity_t<CompletionToken> &, Args &&...)->decltype((<expression>)) [with CompletionToken=lambda [](const boost::system::error_code &)->void, Signatures=<void (boost::system::error_code)>, Initiation=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor>::initiate_async_connect, Args=<const boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> &, boost::system::error_code &>]" at line 982 of "/.../deps/boost_1.90.0__nvidia/include/boost/asio/basic_socket.hpp"
instantiation of "auto boost::asio::basic_socket<Protocol, Executor>::async_connect(const boost::asio::basic_socket<Protocol, Executor>::endpoint_type &, ConnectToken &&)->decltype((<expression>)) [with Protocol=boost::asio::ip::tcp, Executor=boost::asio::any_io_executor, ConnectToken=lambda [](const boost::system::error_code &)->void]" at line 19 of "/.../dev/standalone/src/b.cpp"
The following snipped causes the compilation error in the title, when compiling with the NVidia 25.11 compiler -- works fine with GCC and Clang. The issue occurs with both 1.90.0 and 1.91.0 releases.
After some investigation, the issue seems to boil down to the implementation of
boost::asio::result_of, and the inability of correctly passArgs...to thestd::invoke_result.The full compilation error is