Я работаю над примерами, предоставленными примером boost chat-multi beast, и столкнулся с этой проблемой
Ошибка C2893 Не удалось специализировать шаблон функции 'unknown-type std :: _Mem_fn :: operator () (_ Типы && ...) noexcept () const 'апогейная цепочка W: \ apogee-sdk \ boost-1.72.0 \ boost \ beast \ core \ detail \ bind_handler.hpp 234
и мой код:
void apogeeListener::onaccept(boost::beast::error_code& _error_code, boost::asio::ip::tcp::socket _socket) {
if (_error_code) {
return this->onfail(_error_code, "accept");
}
boost::make_shared<apogeeHTTPSession>(std::move(_socket), this->__state)->run();
this->__acceptor.async_accept(boost::asio::make_strand(this->__io_context), boost::beast::bind_front_handler(&apogeeListener::onaccept, shared_from_this()));
}
и конструктор:
apogeeListener::apogeeListener(boost::asio::io_context& _io_context, boost::asio::ip::tcp::endpoint _endpoint, boost::shared_ptr<apogeeState> const& _state) : __io_context(_io_context), __acceptor(_io_context), __state(_state) {
boost::beast::error_code __error_code;
this->__logger = new apogeeLogger("network-listener.log");
this->__acceptor.open(_endpoint.protocol(), __error_code);
if (__error_code) {
this->onfail(__error_code, "open");
return;
}
this->__acceptor.set_option(boost::asio::socket_base::reuse_address(true), __error_code);
if (__error_code) {
this->onfail(__error_code, "set_option");
return;
}
this->__acceptor.bind(_endpoint, __error_code);
if (__error_code) {
this->onfail(__error_code, "bind");
return;
}
this->__acceptor.listen(boost::asio::socket_base::max_listen_connections, __error_code);
if (__error_code) {
this->onfail(__error_code, "listen");
return;
}
}
сообщение об ошибке - изображение.
* 1016 Вывод компилятора был таким: когда я комментирую функции, все в порядке, но когда я пытаюсь скомпилировать функции без комментариев. Затем появляется ошибка.
1>------ Build started: Project: apogee-chain, Configuration: Debug x64 ------
1>apogeeListener.cpp
1>W:\apogee-interfaces\apogee-chain\apogee-chain\apogeePlatform.hpp(46,155): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data
1>W:\apogee-interfaces\apogee-chain\apogee-chain\apogeeState.h(10,50): warning C4227: anachronism used: qualifiers on reference are ignored
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(235,20): error C2672: 'operator __surrogate_func': no matching overloaded function found
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(257): message : see reference to function template instantiation 'void boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>::invoke<0,Arg1&,_Ty>(std::true_type,boost::mp11::integer_sequence<unsigned __int64,0>,Arg1 &,_Ty &&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Arg1=const boost::system::error_code,
1> _Ty=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(258): message : see reference to function template instantiation 'void boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>::invoke<0,Arg1&,_Ty>(std::true_type,boost::mp11::integer_sequence<unsigned __int64,0>,Arg1 &,_Ty &&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Arg1=const boost::system::error_code,
1> _Ty=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\bind_handler.hpp(667): message : see reference to function template instantiation 'void boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>::operator ()<Arg1&,Arg2>(Arg1 &,Arg2 &&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Arg1=const boost::system::error_code,
1> Arg2=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\bind_handler.hpp(666): message : see reference to function template instantiation 'void boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>::operator ()<Arg1&,Arg2>(Arg1 &,Arg2 &&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Arg1=const boost::system::error_code,
1> Arg2=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\bind_handler.hpp(665): message : while compiling class template member function 'void boost::asio::detail::move_binder2<Handler,boost::system::error_code,boost::asio::basic_stream_socket<Protocol,Executor1>>::operator ()(void)'
1> with
1> [
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Protocol=boost::asio::ip::tcp,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\executor_function.hpp(91): message : see reference to function template instantiation 'void boost::asio::detail::move_binder2<Handler,boost::system::error_code,boost::asio::basic_stream_socket<Protocol,Executor1>>::operator ()(void)' being compiled
1> with
1> [
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Protocol=boost::asio::ip::tcp,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\win_iocp_socket_accept_op.hpp(270): message : see reference to class template instantiation 'boost::asio::detail::move_binder2<Handler,boost::system::error_code,boost::asio::basic_stream_socket<Protocol,Executor1>>' being compiled
1> with
1> [
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Protocol=boost::asio::ip::tcp,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\win_iocp_socket_accept_op.hpp(210): message : while compiling class template member function 'void boost::asio::detail::win_iocp_socket_move_accept_op<boost::asio::ip::tcp,PeerIoExecutor,Handler,IoExecutor>::do_complete(void *,boost::asio::detail::operation *,const boost::system::error_code &,size_t)'
1> with
1> [
1> PeerIoExecutor=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> IoExecutor=boost::asio::detail::io_object_executor<boost::asio::executor>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\win_iocp_socket_accept_op.hpp(179): message : see reference to function template instantiation 'void boost::asio::detail::win_iocp_socket_move_accept_op<boost::asio::ip::tcp,PeerIoExecutor,Handler,IoExecutor>::do_complete(void *,boost::asio::detail::operation *,const boost::system::error_code &,size_t)' being compiled
1> with
1> [
1> PeerIoExecutor=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> IoExecutor=boost::asio::detail::io_object_executor<boost::asio::executor>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\detail\win_iocp_socket_service.hpp(526): message : see reference to class template instantiation 'boost::asio::detail::win_iocp_socket_move_accept_op<boost::asio::ip::tcp,PeerIoExecutor,Handler,IoExecutor>' being compiled
1> with
1> [
1> PeerIoExecutor=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> IoExecutor=boost::asio::detail::io_object_executor<boost::asio::executor>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\basic_socket_acceptor.hpp(2473): message : see reference to function template instantiation 'void boost::asio::detail::win_iocp_socket_service<Protocol>::async_move_accept<Executor1,boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,boost::asio::detail::io_object_executor<Executor>>(boost::asio::detail::win_iocp_socket_service<Protocol>::implementation_type &,const PeerIoExecutor &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *,Handler &,const IoExecutor &)' being compiled
1> with
1> [
1> Protocol=boost::asio::ip::tcp,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> T=apogeeNetwork::apogeeListener,
1> Executor=boost::asio::executor,
1> PeerIoExecutor=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> IoExecutor=boost::asio::detail::io_object_executor<boost::asio::executor>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\basic_socket_acceptor.hpp(2471): message : see reference to function template instantiation 'void boost::asio::detail::win_iocp_socket_service<Protocol>::async_move_accept<Executor1,boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,boost::asio::detail::io_object_executor<Executor>>(boost::asio::detail::win_iocp_socket_service<Protocol>::implementation_type &,const PeerIoExecutor &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *,Handler &,const IoExecutor &)' being compiled
1> with
1> [
1> Protocol=boost::asio::ip::tcp,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> T=apogeeNetwork::apogeeListener,
1> Executor=boost::asio::executor,
1> PeerIoExecutor=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Handler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> IoExecutor=boost::asio::detail::io_object_executor<boost::asio::executor>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\async_result.hpp(150): message : see reference to function template instantiation 'void boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept::operator ()<RawCompletionToken,Executor1,other_socket_type>(MoveAcceptHandler &&,const Executor1 &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *,Socket *) const' being compiled
1> with
1> [
1> RawCompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> MoveAcceptHandler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Socket=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\async_result.hpp(151): message : see reference to function template instantiation 'void boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept::operator ()<RawCompletionToken,Executor1,other_socket_type>(MoveAcceptHandler &&,const Executor1 &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *,Socket *) const' being compiled
1> with
1> [
1> RawCompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> MoveAcceptHandler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Socket=other_socket_type
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\async_result.hpp(362): message : see reference to function template instantiation 'boost::asio::async_result<boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,Signature>::return_type boost::asio::async_result<boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,Signature>::initiate<Initiation,CompletionToken,const Executor1&,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp>*,other_socket_type*>(Initiation &&,RawCompletionToken &&,const Executor1 &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *&&,other_socket_type *&&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Signature=void (boost::system::error_code,other_socket_type),
1> Initiation=boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept,
1> CompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> RawCompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\async_result.hpp(363): message : see reference to function template instantiation 'boost::asio::async_result<boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,Signature>::return_type boost::asio::async_result<boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>,Signature>::initiate<Initiation,CompletionToken,const Executor1&,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp>*,other_socket_type*>(Initiation &&,RawCompletionToken &&,const Executor1 &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *&&,other_socket_type *&&)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Signature=void (boost::system::error_code,other_socket_type),
1> Initiation=boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept,
1> CompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> RawCompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\asio\basic_socket_acceptor.hpp(1821): message : see reference to function template instantiation 'void boost::asio::async_initiate<MoveAcceptHandler,void(boost::system::error_code,other_socket_type),boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept,const Executor1&,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp>*,other_socket_type*>(Initiation &&,CompletionToken &,const Executor1 &,boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> *&&,other_socket_type *&&)' being compiled
1> with
1> [
1> MoveAcceptHandler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> Initiation=boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::initiate_async_move_accept,
1> CompletionToken=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>
1> ]
1>W:\apogee-interfaces\apogee-chain\apogee-chain\apogeeListener.cpp(15): message : see reference to function template instantiation 'void boost::asio::basic_socket_acceptor<boost::asio::ip::tcp,boost::asio::executor>::async_accept<boost::asio::strand<boost::asio::io_context::executor_type>,boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<T>>>(const Executor1 &,MoveAcceptHandler &&,void *)' being compiled
1> with
1> [
1> T=apogeeNetwork::apogeeListener,
1> Executor1=boost::asio::strand<boost::asio::io_context::executor_type>,
1> MoveAcceptHandler=boost::beast::detail::bind_front_wrapper<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket),boost::shared_ptr<apogeeNetwork::apogeeListener>>
1> ]
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\string.hpp(56): message : see reference to class template instantiation 'boost::basic_string_view<char,std::char_traits<char>>' being compiled
1>W:\apogee-sdk\boost-1.72.0\boost\asio\use_future.hpp(139): message : see reference to class template instantiation 'boost::asio::use_future_t<std::allocator<void>>::std_allocator_void' being compiled
1>W:\apogee-sdk\boost-1.72.0\boost\asio\use_future.hpp(147): message : see reference to class template instantiation 'boost::asio::use_future_t<std::allocator<void>>' being compiled
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(234,1): error C2893: Failed to specialize function template 'unknown-type std::_Mem_fn<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket)>::operator ()(_Types &&...) noexcept(<expr>) const'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\functional(644): message : see declaration of 'std::_Mem_fn<void (__cdecl apogeeNetwork::apogeeListener::* )(boost::beast::error_code &,boost::asio::ip::tcp::socket)>::operator ()'
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(234,1): message : With the following template arguments:
1>W:\apogee-sdk\boost-1.72.0\boost\beast\core\detail\bind_handler.hpp(234,1): message : '_Types={T, Arg1 &, _Ty}'
1>Done building project "apogee-chain.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========