mirror of
https://github.com/zeromq/cppzmq.git
synced 2025-03-01 10:57:59 +01:00
make poller_t work with ancient gcc 4.8.1
For some reason that I didn't get to the root cause, gcc 4.8.1 (that I'm stuck with) does not like the initializer for `unique_ptr` implemented as a lambda: ``` third_party/zmqcpp/repo/zmq.hpp: In constructor 'zmq::poller_t<T>::poller_t() [with T = std::function<void(zmq::event_flags)>]': third_party/zmqcpp/repo/zmq.hpp:1871:5: error: converting to 'std::unique_ptr<void, zmq::poller_t<std::function<void(zmq::event_flags)> >::destroy_poller_t>' from initializer list would use explicit constructor 'std::unique_ptr<_Ty, _Dx>::unique_ptr(std::unique_ptr<_Ty, _Dx>::pointer) [with _Ty = void; _Dx = zmq::poller_t<std::function<void(zmq::event_flags)> >::destroy_poller_t; std::unique_ptr<_Ty, _Dx>::pointer = void*]' poller_t() = default; ^ In file included from networking/ipc/ipc.cc:6:0: third_party/zmqcpp/repo/zmq_addon.hpp: At global scope: third_party/zmqcpp/repo/zmq_addon.hpp:447:40: note: synthesized method 'zmq::poller_t<T>::poller_t() [with T = std::function<void(zmq::event_flags)>]' first required here poller_t<handler_type> base_poller{}; ^ In file included from ./networking/ipc/ipc.h:13:0, from networking/ipc/ipc.cc:1: third_party/zmqcpp/repo/zmq.hpp: In constructor 'zmq::poller_t<T>::poller_t() [with T = zmq::socket_t]': third_party/zmqcpp/repo/zmq.hpp:1871:5: error: converting to 'std::unique_ptr<void, zmq::poller_t<zmq::socket_t>::destroy_poller_t>' from initializer list would use explicit constructor 'std::unique_ptr<_Ty, _Dx>::unique_ptr(std::unique_ptr<_Ty, _Dx>::pointer) [with _Ty = void; _Dx = zmq::poller_t<zmq::socket_t>::destroy_poller_t; std::unique_ptr<_Ty, _Dx>::pointer = void*]' poller_t() = default; ^ networking/ipc/ipc.cc: In member function 'void networking::ipc::Ipc::ThreadMain()': networking/ipc/ipc.cc:313:36: note: synthesized method 'zmq::poller_t<T>::poller_t() [with T = zmq::socket_t]' first required here ::zmq::poller_t<::zmq::socket_t> poller; ^ ``` This moves the initialization to constructor, and makes gcc happy.
This commit is contained in:
parent
d25c58a05d
commit
63250e15e8
14
zmq.hpp
14
zmq.hpp
@ -1868,7 +1868,11 @@ template<typename T = no_user_data> class poller_t
|
||||
public:
|
||||
using event_type = poller_event<T>;
|
||||
|
||||
poller_t() = default;
|
||||
poller_t() : poller_ptr(zmq_poller_new())
|
||||
{
|
||||
if (!poller_ptr)
|
||||
throw error_t();
|
||||
}
|
||||
|
||||
template<
|
||||
typename Dummy = void,
|
||||
@ -1931,13 +1935,7 @@ template<typename T = no_user_data> class poller_t
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<void, destroy_poller_t> poller_ptr{
|
||||
[]() {
|
||||
auto poller_new = zmq_poller_new();
|
||||
if (poller_new)
|
||||
return poller_new;
|
||||
throw error_t();
|
||||
}()};
|
||||
std::unique_ptr<void, destroy_poller_t> poller_ptr;
|
||||
|
||||
void add_impl(zmq::socket_ref socket, event_flags events, T *user_data)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user