本来我觉得半天可以解决的编译错误,现在看来一天都搞不定了

本文详细分析了在使用Boost库的asio模块与自定义协程库时出现的错误C2666,并通过具体代码示例解释了解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1>------ Build started: Project: Protocol, Configuration: Debugmt Win32 ------
1>  client.cpp
1>d:\xuser\sources\boost_lib\boost\asio\detail\handler_invoke_helpers.hpp(37): error C2666: 'asio_handler_invoke' : 3 overloads have similar conversions
1>          handler_alloc_base.h(25): could be 'void asio_handler_invoke<Function>(const Function &,Wrap *)' [found using argument-dependent lookup]
1>          with
1>          [
1>              Function=boost::asio::detail::binder2<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>>
1>  ,            Wrap=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\handler_invoke_hook.hpp(74): or       'void boost::asio::asio_handler_invoke<Function>(const Function &,...)'
1>          with
1>          [
1>              Function=boost::asio::detail::binder2<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\handler_invoke_hook.hpp(67): or       'void boost::asio::asio_handler_invoke<Function>(Function &,...)'
1>          with
1>          [
1>              Function=boost::asio::detail::binder2<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>>
1>          ]
1>          while trying to match the argument list '(boost::asio::detail::binder2<Handler,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<InternetProtocol>>, huahua::detail::connect_coro<Handler> *)'
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>          ]
1>          and
1>          [
1>              Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>          ]
1>          note: qualification adjustment (const/volatile) may be causing the ambiguity
1>          d:\xuser\sources\boost_lib\boost\asio\detail\resolve_op.hpp(112) : see reference to function template instantiation 'void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<Handler,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<InternetProtocol>>,Handler>(Function &,Context &)' being compiled
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>  ,            Function=boost::asio::detail::binder2<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>,boost::system::error_code,boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>>
1>  ,            Context=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\detail\resolve_op.hpp(66) : while compiling class template member function 'void boost::asio::detail::resolve_op<Protocol,Handler>::do_complete(boost::asio::detail::io_service_impl *,boost::asio::detail::operation *,const boost::system::error_code &,size_t)'
1>          with
1>          [
1>              Protocol=boost::asio::ip::tcp
1>  ,            Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\detail\resolve_op.hpp(54) : see reference to function template instantiation 'void boost::asio::detail::resolve_op<Protocol,Handler>::do_complete(boost::asio::detail::io_service_impl *,boost::asio::detail::operation *,const boost::system::error_code &,size_t)' being compiled
1>          with
1>          [
1>              Protocol=boost::asio::ip::tcp
1>  ,            Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\detail\resolver_service.hpp(79) : see reference to class template instantiation 'boost::asio::detail::resolve_op<Protocol,Handler>' being compiled
1>          with
1>          [
1>              Protocol=boost::asio::ip::tcp
1>  ,            Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\ip\resolver_service.hpp(127) : see reference to function template instantiation 'void boost::asio::detail::resolver_service<InternetProtocol>::async_resolve<huahua::detail::connect_coro<Handler>>(boost::asio::detail::resolver_service<InternetProtocol>::implementation_type &,const boost::asio::ip::basic_resolver_query<InternetProtocol> &,huahua::detail::connect_coro<Handler> &)' being compiled
1>          with
1>          [
1>              InternetProtocol=boost::asio::ip::tcp
1>  ,            Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\ip\resolver_service.hpp(127) : see reference to function template instantiation 'void boost::asio::detail::resolver_service<InternetProtocol>::async_resolve<huahua::detail::connect_coro<Handler>>(boost::asio::detail::resolver_service<InternetProtocol>::implementation_type &,const boost::asio::ip::basic_resolver_query<InternetProtocol> &,huahua::detail::connect_coro<Handler> &)' being compiled
1>          with
1>          [
1>              InternetProtocol=boost::asio::ip::tcp
1>  ,            Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\ip\basic_resolver.hpp(167) : see reference to function template instantiation 'boost::asio::async_result<Handler>::type boost::asio::ip::resolver_service<InternetProtocol>::async_resolve<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<T>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>&>(std::shared_ptr<void> &,const boost::asio::ip::basic_resolver_query<InternetProtocol> &,ResolveHandler)' being compiled
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>  ,            T=boost::shared_ptr<huahua::http::client>
1>  ,            ResolveHandler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>> &
1>          ]
1>          d:\xuser\sources\boost_lib\boost\asio\ip\basic_resolver.hpp(167) : see reference to function template instantiation 'boost::asio::async_result<Handler>::type boost::asio::ip::resolver_service<InternetProtocol>::async_resolve<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<T>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>&>(std::shared_ptr<void> &,const boost::asio::ip::basic_resolver_query<InternetProtocol> &,ResolveHandler)' being compiled
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>  ,            T=boost::shared_ptr<huahua::http::client>
1>  ,            ResolveHandler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>> &
1>          ]
1>          connect.h(68) : see reference to function template instantiation 'boost::asio::async_result<Handler>::type boost::asio::ip::basic_resolver<boost::asio::ip::tcp,boost::asio::ip::resolver_service<InternetProtocol>>::async_resolve<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<T>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>&>(const boost::asio::ip::basic_resolver_query<InternetProtocol> &,ResolveHandler)' being compiled
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>  ,            T=boost::shared_ptr<huahua::http::client>
1>  ,            ResolveHandler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>> &
1>          ]
1>          connect.h(68) : see reference to function template instantiation 'boost::asio::async_result<Handler>::type boost::asio::ip::basic_resolver<boost::asio::ip::tcp,boost::asio::ip::resolver_service<InternetProtocol>>::async_resolve<huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<T>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>&>(const boost::asio::ip::basic_resolver_query<InternetProtocol> &,ResolveHandler)' being compiled
1>          with
1>          [
1>              Handler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>  ,            T=boost::shared_ptr<huahua::http::client>
1>  ,            ResolveHandler=huahua::detail::connect_coro<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>> &
1>          ]
1>          connect.h(51) : while compiling class template member function 'void huahua::detail::connect_coro<Handler>::operator ()(boost::system::error_code,const boost::asio::ip::basic_resolver_query<InternetProtocol> *)'
1>          with
1>          [
1>              Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>          ]
1>          connect.h(135) : see reference to function template instantiation 'void huahua::detail::connect_coro<Handler>::operator ()(boost::system::error_code,const boost::asio::ip::basic_resolver_query<InternetProtocol> *)' being compiled
1>          with
1>          [
1>              Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>  ,            InternetProtocol=boost::asio::ip::tcp
1>          ]
1>          connect.h(135) : see reference to class template instantiation 'huahua::detail::connect_coro<Handler>' being compiled
1>          with
1>          [
1>              Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>          ]
1>          client.cpp(162) : see reference to function template instantiation 'void huahua::async_connect<boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<T>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>>(boost::asio::basic_socket<Protocol,StreamSocketService> &,boost::asio::ip::tcp::resolver &,const huahua::uri &,Handler)' being compiled
1>          with
1>          [
1>              T=boost::shared_ptr<huahua::http::client>
1>  ,            Protocol=boost::asio::ip::tcp
1>  ,            StreamSocketService=boost::asio::stream_socket_service<boost::asio::ip::tcp>
1>  ,            Handler=boost::_bi::bind_t<void,boost::_mfi::mf3<void,huahua::http::client,boost::system::error_code,int,huahua::coroutine>,boost::_bi::list4<boost::_bi::value<boost::shared_ptr<huahua::http::client>>,boost::arg<1>,boost::_bi::value<int>,boost::_bi::value<huahua::coroutine>>>
1>          ]
========== Build: 0 succeeded, 1 failed, 4 up-to-date, 0 skipped ==========
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值