diff --git a/src/event/PollBackend.cxx b/src/event/PollBackend.cxx index 74345a745..a3fad40c3 100644 --- a/src/event/PollBackend.cxx +++ b/src/event/PollBackend.cxx @@ -36,10 +36,9 @@ PollBackend::Add(int fd, unsigned events, void *obj) noexcept e.events = events; e.revents = 0; - auto i = items.emplace(fd, Item{}).first; - auto &item = i->second; - item.index = index; - item.obj = obj; + items.emplace(std::piecewise_construct, + std::forward_as_tuple(fd), + std::forward_as_tuple(index, obj)); return true; } diff --git a/src/event/PollBackend.hxx b/src/event/PollBackend.hxx index 694161a1a..703f9f705 100644 --- a/src/event/PollBackend.hxx +++ b/src/event/PollBackend.hxx @@ -34,6 +34,12 @@ class PollBackend { std::size_t index; void *obj; + + constexpr Item(std::size_t _index, void *_obj) noexcept + :index(_index), obj(_obj) {} + + Item(const Item &) = delete; + Item &operator=(const Item &) = delete; }; std::vector poll_events;