diff --git a/include/opendht/dht.h b/include/opendht/dht.h
index beb7c51b96b2b12cea5d6ef11905c444e732f2aa..98a6c65e8fb121c6aa90f2d6767c03aa3952ee81 100644
--- a/include/opendht/dht.h
+++ b/include/opendht/dht.h
@@ -385,8 +385,9 @@ private:
     size_t total_store_size {0};
     size_t max_store_size {DEFAULT_STORAGE_LIMIT};
 
-    std::map<InfoHash, std::shared_ptr<Search>> searches4 {};
-    std::map<InfoHash, std::shared_ptr<Search>> searches6 {};
+    using SearchMap = std::map<InfoHash, std::shared_ptr<Search>>;
+    SearchMap searches4 {};
+    SearchMap searches6 {};
     uint16_t search_id {0};
 
     // map a global listen token to IPv4, IPv6 specific listen tokens.
@@ -462,6 +463,9 @@ private:
 
     // Searches
 
+    inline SearchMap& searches(sa_family_t af) { return af == AF_INET ? searches4 : searches6; }
+    inline const SearchMap& searches(sa_family_t af) const { return af == AF_INET ? searches4 : searches6; }
+
     /**
      * Low-level method that will perform a search on the DHT for the specified
      * infohash (id), using the specified IP version (IPv4 or IPv6).
diff --git a/src/dht.cpp b/src/dht.cpp
index ad26fe5556a0f6aba64434ce85120ca380b0f978..0ea8af1420ab4266c239c9f1ca1389329ae4f957 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -1654,7 +1654,7 @@ Dht::search(const InfoHash& id, sa_family_t af, GetCallback gcb, QueryCallback q
         return {};
     }
 
-    auto& srs = af == AF_INET ? searches4 : searches6;
+    auto& srs = searches(af);
     const auto& srp = srs.find(id);
     std::shared_ptr<Search> sr {};
 
@@ -1726,7 +1726,7 @@ Dht::announce(const InfoHash& id,
     created = std::min(now, created);
     storageStore(id, value, created);
 
-    auto& srs = af == AF_INET ? searches4 : searches6;
+    auto& srs = searches(af);
     auto srp = srs.find(id);
     auto sr = srp == srs.end() ? search(id, af) : srp->second;
     if (!sr) {
@@ -1780,7 +1780,7 @@ Dht::listenTo(const InfoHash& id, sa_family_t af, GetCallback cb, Value::Filter
        // DHT_LOG_ERR("[search %s IPv%c] search_time is now in %lfs", sr->id.toString().c_str(), (sr->af == AF_INET) ? '4' : '6', print_dt(tm-clock::now()));
 
     //DHT_LOG_WARN("listenTo %s", id.toString().c_str());
-    auto& srs = af == AF_INET ? searches4 : searches6;
+    auto& srs = searches(af);
     auto srp = srs.find(id);
     std::shared_ptr<Search> sr = (srp == srs.end()) ? search(id, af) : srp->second;
     if (!sr)
@@ -2349,8 +2349,7 @@ Dht::connectivityChanged(sa_family_t af)
     for (auto& b : buckets(af))
         b.time = time_point::min();
     network_engine.connectivityChanged(af);
-    auto& searches = (af == AF_INET) ? searches4 : searches6;
-    for (auto& sp : searches)
+    for (auto& sp : searches(af))
         for (auto& sn : sp.second->nodes) {
             for (auto& ls : sn.listenStatus)
                 network_engine.cancelRequest(ls.second);
@@ -2678,9 +2677,9 @@ Dht::getSearchLog(const InfoHash& id, sa_family_t af) const
     if (af == AF_UNSPEC) {
         out << getSearchLog(id, AF_INET) << getSearchLog(id, AF_INET);
     } else {
-        auto& searches = (af == AF_INET) ? searches4 : searches6;
-        auto sr = searches.find(id);
-        if (sr != searches.end())
+        auto& srs = searches(af);
+        auto sr = srs.find(id);
+        if (sr != srs.end())
             dumpSearch(*sr->second, out);
     }
     return out.str();
@@ -3110,7 +3109,7 @@ Dht::onError(std::shared_ptr<Request> req, DhtProtocolException e) {
         DHT_LOG.e(req->node->id, "[node %s] token flush", req->node->toString().c_str());
         req->node->authError();
         network_engine.cancelRequest(req);
-        for (auto& srp : req->node->getFamily() == AF_INET ? searches4 : searches6) {
+        for (auto& srp : searches(req->node->getFamily())) {
             auto& sr = srp.second;
             for (auto& n : sr->nodes) {
                 if (n.node != req->node) continue;