自boost 1.74以来:编译错误使用带intel-18.0-vc14的boost asio生成代码 < L> >P>在英特尔XC++ 中,用VS 2015(代码< iTel-18.0 VC14工具集)构建了带有C++2018(更新2)的Boost 1.74 < > >当我尝试使用英特尔C++编译器与VS2015集成使用ASIO代码时,会遇到大量编译错误。

自boost 1.74以来:编译错误使用带intel-18.0-vc14的boost asio生成代码 < L> >P>在英特尔XC++ 中,用VS 2015(代码< iTel-18.0 VC14工具集)构建了带有C++2018(更新2)的Boost 1.74 < > >当我尝试使用英特尔C++编译器与VS2015集成使用ASIO代码时,会遇到大量编译错误。,c++,visual-studio-2015,boost-asio,intel-composer,msvc14,C++,Visual Studio 2015,Boost Asio,Intel Composer,Msvc14,当我尝试用VS 2015构建相同的代码时,它编译得很好 以下代码未编译: 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_ex

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

  • 以下代码未编译:

    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
    
  • 如果我定义
    BOOST\u ASIO\u使用执行器作为默认值
    。但以下示例代码不适用:

     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\u work.hpp(366):错误:多个部分专门化与类“boost::asio::detail::handler\u work\u base”的模板参数列表匹配
    
  • 问题:

    • 在我的示例中,我需要如何修改上述签名来更新我们的遗留代码以使用boost 1.74
    • 或者我需要定义一些编译定义来获得向后兼容的行为
    • 这是编译器检测中的一个错误(在boost或asio中),还是这些年来我们一直很幸运,需要用intel编译器构建boost以实现兼容
    1>F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/detail/handler\u work.hpp(366):错误:多个部分专门化与类“boost::asio::detail::handler\u work\u base”的模板参数列表匹配
    1> “boost::asio::detail::handler\u work\u base”
    1> “boost::asio::detail::handler\u work\u base”
    1> 装卸工工作基地,
    1>      ^
    1> 在以下期间检测到:
    1> 类“boost::asio::detail::handler_work[with handler=boost::asio::detail::binder1void,boost::system::error\u code>,IoExecutor=boost::asio::io_context::executor_type,=void]”的第81行的实例化“F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/detail/completion\u handler.hpp”
    1> 在的第68行实例化类“boost::asio::detail::completion\u handler[with handler=boost::asio::detail::binder1void,boost::system::error\u code>,IoExecutor=boost::asio::io\u context::executor\u type]”F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/detail/impl/strand\u service.hpp”
    1> 第344行的“void boost::asio::detail::strand_service::dispatch(boost::asio::detail::strand_service::implementation_type&,Handler&)[with Handler=boost::asio::detail::binder1void,boost::system::error_code>]”的实例化F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/io\u context\u strand.hpp”
    1> 在“”的第183行实例化“void boost::asio::io_context::strand::initiate_dispatch::operator()(LegacyCompletionHandler&&,boost::asio::io_context::strand*)const[带有LegacyCompletionHandler=boost::asio::detail::binder1void,boost::system::error_code>]”F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/async\u result.hpp”
    1> 实例化“boost::asio::async_result::return_type boost::asio::async_result::initiate&&,RawCompletionToken&&,T1&)[with CompletionToken=boost::asio::detail::binder1void,boost::system::error_code>,Signature=void(),Initiation=boost::asio::io_context::strand::initiate_dispatch,RawCompletionToken=boost::asio::detail::binder1 boost::system::error_code&->void,boost::system::error_code>,T1=boost::asio::io_context::strand*]”位于“F:\ThirdPartyLibsRoot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/async\u result.hpp”
    1> [18未显示实例化上下文]
    1> “boost::asio::detail::win_iocp_socket_accept_op::win_iocp_socket_accept_op(boost::asio::detail::win_iocp_socket_service_base&,boost::asio::detail::socket_type={socket UINT_PTR={unsigned u int64}},socket&,const协议&,协议&,端点*,bool,Handler&,const IoExecutor&)[使用Socket=boost::asio::basic_Socket,Protocol=boost::asio::ip::tcp,
    1> Handler=boost::asio::detail::wrapped_handlervid,boost::asio::detail::is_continuation_if_running>,IoExecutor=boost::asio::any_io_executor]“F:\ThirdPartyLibsRoot\svn-esx_SuperMash_libraries_boost_boost_1_74_0_z43_win_msvc-14.0-python2\include\boost/asio/detail/win/iocp_socket\u service.hpp”第503;行503;
    1> 实例化“void boost::asio::detail::win\u iocp\u socket\u service::async\u accept(boost::asio::detail::win\u iocp\u socket\u service::implementation\u type&,socket&,boost::asio::detail::win\u iocp\u socket\u service::endpoint\u type*,Handler&,const IoExecutor&)[with Protocol=boost::asio::ip::tcp,Socket=boost::asio::basic_Socket,Handler=boost::asio::detail::wrapped_Handler lambda[](const boost::system::error_code&)->void,boost::asio::detail::is_continuation_if_running>,IoExecutor=boost::asio::any_io_executor]“在的第2445行”F:\thirdpartylibroot\svn-esx\u SuperMash\u libraries\u boost\u boost\u 1\u 74\u 0\u z43\u win\u msvc-14.0-python2\include\boost/asio/basic\u socket\u acceptor.hpp”
    1> 实例化“void boost::asio::basic_socket_acceptor::initiate_async_accept::operator()(AcceptHandler&,boost::asio::basic_socket::basic_acceptor::endpoint_type*)const[with Protocol=boost::asio::ip,Executor=boost::asio::any_io_Executor,AcceptHandler=boost::asio::detail::wrapped_handlervid,
    1> boost::asio::detail::第183行的“如果运行>,协议1=boost::asio::ip::tcp,EXCEUTOR 1=boost::asio::any_io_EXCEUTOR]”是否继续
    
     > 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>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"