3
  1. intel-18.0-vc14我在 x64 版本中使用 VS 2015(工具集)使用 Intel c++ 2018(更新 2)构建了 boost 1.74

  2. 当我尝试构建将 ASIO 与带有 VS2015 集成的英特尔 c++ 编译器一起使用的代码时,我收到大量编译错误。

  3. 当我尝试使用 VS 2015 构建相同的代码时,它编译得很好。

  4. 以下代码无法编译:

    boost::asio::io_context context;
    boost::asio::ip::tcp::acceptor acceptor(context);
    

    带有以下错误消息:

    > boost/asio/detail/io_object_impl.hpp(61): error : no instance of constructor "boost::asio::execution::any_executor
    
  5. 如果我定义BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT上面的示例编译。但以下示例代码没有:

     boost::asio::io_context context;
     boost::asio::ip::tcp::acceptor acceptor(context);
     boost::asio::io_context::strand strand(context);
     boost::asio::ip::tcp::socket socket(context);
    
     acceptor.async_accept(socket,
         strand.wrap([](const boost::system::error_code & error) {})
     );
    

    带有错误消息(我在下面发布了完整的错误消息):

     > boost/asio/detail/handler_work.hpp(366): error : more than one partial specialization matches the template argument list of class "boost::asio::detail::handler_work_base<boost::asio::io_context::executor_type, void, boost::asio::io_context, boost::asio::executor, void>"
    

问题:

  • 如何在我的示例中修改上述签名以更新我们的旧代码以使用 boost 1.74?
  • 还是我需要定义一些编译定义来获得向后兼容的行为?
  • 这是编译器检测中的一个错误(在 boost 或 asio 中),还是这些年来我们很幸运并且需要使用 intel 编译器构建 boost 才能兼容?
1>F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/detail/handler_work.hpp(366): error : more than one partial specialization matches the template argument list of class "boost::asio::detail::handler_work_base<boost::asio::io_context::executor_type, void, boost::asio::io_context, boost::asio::executor, void>"
1>              "boost::asio::detail::handler_work_base<Executor, CandidateExecutor, IoContext, PolymorphicExecutor, boost::asio::enable_if<<expression>, void>::type>"
1>              "boost::asio::detail::handler_work_base<Executor, void, IoContext, PolymorphicExecutor, boost::asio::enable_if<boost::is_same<Executor, IoContext::executor_type>::value, void>::type>"
1>      handler_work_base<IoExecutor>,
1>      ^
1>            detected during:
1>              instantiation of class "boost::asio::detail::handler_work<Handler, IoExecutor, <unnamed>> [with Handler=boost::asio::detail::binder1<lambda [](const boost::system::error_code &)->void, boost::system::error_code>, IoExecutor=boost::asio::io_context::executor_type, <unnamed>=void]" at line 81 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/detail/completion_handler.hpp"
1>              instantiation of class "boost::asio::detail::completion_handler<Handler, IoExecutor> [with Handler=boost::asio::detail::binder1<lambda [](const boost::system::error_code &)->void, boost::system::error_code>, IoExecutor=boost::asio::io_context::executor_type]" at line 68 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/detail/impl/strand_service.hpp"
1>              instantiation of "void boost::asio::detail::strand_service::dispatch(boost::asio::detail::strand_service::implementation_type &, Handler &) [with Handler=boost::asio::detail::binder1<lambda [](const boost::system::error_code &)->void, boost::system::error_code>]" at line 344 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/io_context_strand.hpp"
1>              instantiation of "void boost::asio::io_context::strand::initiate_dispatch::operator()(LegacyCompletionHandler &&, boost::asio::io_context::strand *) const [with LegacyCompletionHandler=boost::asio::detail::binder1<lambda [](const boost::system::error_code &)->void, boost::system::error_code>]" at line 183 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/async_result.hpp"
1>              instantiation of "boost::asio::async_result<CompletionToken, Signature>::return_type boost::asio::async_result<CompletionToken, Signature>::initiate(Initiation &&, RawCompletionToken &&, T1 &&) [with CompletionToken=boost::asio::detail::binder1<lambda [](const boost::system::error_code &)->void, boost::system::error_code>, Signature=void (), Initiation=boost::asio::io_context::strand::initiate_dispatch, RawCompletionToken=boost::asio::detail::binder1<lambda [](const
1>                        boost::system::error_code &)->void, boost::system::error_code>, T1=boost::asio::io_context::strand *]" at line 470 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/async_result.hpp"
1>              [ 18 instantiation contexts not shown ]
1>              instantiation of "boost::asio::detail::win_iocp_socket_accept_op<Socket, Protocol, Handler, IoExecutor>::win_iocp_socket_accept_op(boost::asio::detail::win_iocp_socket_service_base &, boost::asio::detail::socket_type={SOCKET={UINT_PTR={unsigned __int64}}}, Socket &, const Protocol &, Protocol::endpoint *, bool, Handler &, const IoExecutor &) [with Socket=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor>, Protocol=boost::asio::ip::tcp,
1>                        Handler=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand, lambda [](const boost::system::error_code &)->void, boost::asio::detail::is_continuation_if_running>, IoExecutor=boost::asio::any_io_executor]" at line 503 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/detail/win_iocp_socket_service.hpp"
1>              instantiation of "void boost::asio::detail::win_iocp_socket_service<Protocol>::async_accept(boost::asio::detail::win_iocp_socket_service<Protocol>::implementation_type &, Socket &, boost::asio::detail::win_iocp_socket_service<Protocol>::endpoint_type *, Handler &, const IoExecutor &) [with Protocol=boost::asio::ip::tcp, Socket=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor>, Handler=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand,
1>                        lambda [](const boost::system::error_code &)->void, boost::asio::detail::is_continuation_if_running>, IoExecutor=boost::asio::any_io_executor]" at line 2445 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/basic_socket_acceptor.hpp"
1>              instantiation of "void boost::asio::basic_socket_acceptor<Protocol, Executor>::initiate_async_accept::operator()(AcceptHandler &&, boost::asio::basic_socket<Protocol1, Executor1> *, boost::asio::basic_socket_acceptor<Protocol, Executor>::endpoint_type *) const [with Protocol=boost::asio::ip::tcp, Executor=boost::asio::any_io_executor, AcceptHandler=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand, lambda [](const boost::system::error_code &)->void,
1>                        boost::asio::detail::is_continuation_if_running>, Protocol1=boost::asio::ip::tcp, Executor1=boost::asio::any_io_executor]" at line 183 of "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/async_result.hpp"
1>              instantiation of "boost::asio::async_result<CompletionToken, Signature>::return_type boost::asio::async_result<CompletionToken, Signature>::initiate(Initiation &&, RawCompletionToken &&, T1 &&, T2 &&) [with CompletionToken=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand, lambda [](const boost::system::error_code &)->void, boost::asio::detail::is_continuation_if_running>, Signature=void (boost::system::error_code),
1>                        Initiation=boost::asio::basic_socket_acceptor<boost::asio::ip::tcp, boost::asio::any_io_executor>::initiate_async_accept, RawCompletionToken=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand, lambda [](const boost::system::error_code &)->void, boost::asio::detail::is_continuation_if_running>, T1=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor> *, T2=boost::asio::ip::tcp::endpoint *]" at line 470 of
1>                        "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/async_result.hpp"
1>              instantiation of "boost::asio::enable_if<boost::asio::detail::async_result_has_initiate_memfn<CompletionToken, Signature>::value, boost::asio::async_result<boost::decay<CompletionToken>::type, Signature>::return_type>::type boost::asio::async_initiate<CompletionToken,Signature,Initiation,T1,T2>(Initiation &&, CompletionToken &, T1 &&, T2 &&) [with CompletionToken=boost::asio::detail::wrapped_handler<boost::asio::io_context::strand, lambda [](const boost::system::error_code &)->void,
1>                        boost::asio::detail::is_continuation_if_running>, Signature=void (boost::system::error_code), Initiation=boost::asio::basic_socket_acceptor<boost::asio::ip::tcp, boost::asio::any_io_executor>::initiate_async_accept, T1=boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::any_io_executor> *, T2=boost::asio::ip::tcp::endpoint *]" at line 1351 of
1>                        "F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/basic_socket_acceptor.hpp"
4

0 回答 0