From 8ea2ee451a1af7c5b5c8f4b36c1f77d44442064d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Sep 2018 13:02:35 -0700
Subject: [PATCH] Fix error: call of overloaded distance is ambiguous
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The boost::iterators::distance function template is an adapted version
of std::distance for the Boost iterator traversal in 2.68 it has started
to fail with argument dependent lookup and compiler is erroring out

with

error: call of overloaded ‘distance'

boost implementation of distance is protected against being found by ADL

The way function is called in libdhcp means it will be found via ADL and
all namespaces will be considered which is providing problematic since
its getting it from both std:: and boost:: namespaces

so let it not rely on ADL by qualifying then calls with std:: namespace

Upstream-Status: Submitted [https://github.com/isc-projects/kea/pull/103]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/lib/dhcp/libdhcp++.cc | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/lib/dhcp/libdhcp++.cc b/src/lib/dhcp/libdhcp++.cc
index 330c02b..ced705d 100644
--- a/src/lib/dhcp/libdhcp++.cc
+++ b/src/lib/dhcp/libdhcp++.cc
@@ -419,14 +419,14 @@ size_t LibDHCP::unpackOptions6(const OptionBuffer& buf,
         // We previously did the lookup only for dhcp6 option space, but with the
         // addition of S46 options, we now do it for every space.
         range = idx.equal_range(opt_type);
-        num_defs = distance(range.first, range.second);
+        num_defs = std::distance(range.first, range.second);
 
         // Standard option definitions do not include the definition for
         // our option or we're searching for non-standard option. Try to
         // find the definition among runtime option definitions.
         if (num_defs == 0) {
             range = runtime_idx.equal_range(opt_type);
-            num_defs = distance(range.first, range.second);
+            num_defs = std::distance(range.first, range.second);
         }
 
         OptionPtr opt;
@@ -538,14 +538,14 @@ size_t LibDHCP::unpackOptions4(const OptionBuffer& buf,
         // may be standard options in other spaces (e.g. radius). So we now do
         // the lookup for every space.
         range = idx.equal_range(opt_type);
-        num_defs = distance(range.first, range.second);
+        num_defs = std::distance(range.first, range.second);
 
         // Standard option definitions do not include the definition for
         // our option or we're searching for non-standard option. Try to
         // find the definition among runtime option definitions.
         if (num_defs == 0) {
             range = runtime_idx.equal_range(opt_type);
-            num_defs = distance(range.first, range.second);
+            num_defs = std::distance(range.first, range.second);
         }
 
         // Check if option unpacking must be deferred
@@ -638,7 +638,7 @@ size_t LibDHCP::unpackVendorOptions6(const uint32_t vendor_id,
                 idx->equal_range(opt_type);
             // Get the number of returned option definitions for the
             // option code.
-            size_t num_defs = distance(range.first, range.second);
+            size_t num_defs = std::distance(range.first, range.second);
 
             if (num_defs > 1) {
                 // Multiple options of the same code are not supported
@@ -746,7 +746,7 @@ size_t LibDHCP::unpackVendorOptions4(const uint32_t vendor_id, const OptionBuffe
                     idx->equal_range(opt_type);
                 // Get the number of returned option definitions for
                 // the option code.
-                size_t num_defs = distance(range.first, range.second);
+                size_t num_defs = std::distance(range.first, range.second);
 
                 if (num_defs > 1) {
                     // Multiple options of the same code are not
-- 
2.18.0

