diff --git a/src/value.cpp b/src/value.cpp
index 6d50412c7b46f9a40f7b06afc4e28996d72b4e56..f6e2b1a947b419e65ac797c836fbd1d4fbf1a7b4 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -496,10 +496,10 @@ Query::msgpack_unpack(const msgpack::object& o)
 }
 
 template <typename T>
-bool subset(std::vector<T> fds, std::vector<T> qfds)
+bool subset(const std::vector<T>& fds, const std::vector<T>& qfds)
 {
-    for (auto& fd : fds) {
-        if (std::find_if(qfds.begin(), qfds.end(), [&fd](T& _vfd) { return fd == _vfd; }) == qfds.end())
+    for (const auto& fd : fds) {
+        if (std::find_if(qfds.begin(), qfds.end(), [&fd](const T& _vfd) { return fd == _vfd; }) == qfds.end())
             return false;
     }
     return true;