From b59e94cebfb5e413d153b30a2dc342f44ed005d1 Mon Sep 17 00:00:00 2001
From: Davis King <davis@dlib.net>
Date: Sun, 10 Jan 2010 22:00:11 +0000
Subject: [PATCH] Fixed potential compile time bugs in the comparison operators
 for futures.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%403381
---
 dlib/threads/thread_pool_extension.h          | 24 +++++++++----------
 dlib/threads/thread_pool_extension_abstract.h | 12 +++++-----
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/dlib/threads/thread_pool_extension.h b/dlib/threads/thread_pool_extension.h
index 5907b9fa..3574adda 100644
--- a/dlib/threads/thread_pool_extension.h
+++ b/dlib/threads/thread_pool_extension.h
@@ -109,18 +109,18 @@ namespace dlib
     template <typename T> bool operator<  (const future<T>& a, const future<T>& b) { return a.get() <  b.get(); }
     template <typename T> bool operator>  (const future<T>& a, const future<T>& b) { return a.get() >  b.get(); }
 
-    template <typename T> bool operator== (const future<T>& a, const T& b) { return a.get() == b; }
-    template <typename T> bool operator== (const T& a, const future<T>& b) { return a.get() == b; }
-    template <typename T> bool operator!= (const future<T>& a, const T& b) { return a.get() != b; }
-    template <typename T> bool operator!= (const T& a, const future<T>& b) { return a.get() != b; }
-    template <typename T> bool operator<= (const future<T>& a, const T& b) { return a.get() <= b; }
-    template <typename T> bool operator<= (const T& a, const future<T>& b) { return a.get() <= b; }
-    template <typename T> bool operator>= (const future<T>& a, const T& b) { return a.get() >= b; }
-    template <typename T> bool operator>= (const T& a, const future<T>& b) { return a.get() >= b; }
-    template <typename T> bool operator<  (const future<T>& a, const T& b) { return a.get() <  b; }
-    template <typename T> bool operator<  (const T& a, const future<T>& b) { return a.get() <  b; }
-    template <typename T> bool operator>  (const future<T>& a, const T& b) { return a.get() >  b; }
-    template <typename T> bool operator>  (const T& a, const future<T>& b) { return a.get() >  b; }
+    template <typename T> bool operator== (const future<T>& a, const T& b)         { return a.get() == b; }
+    template <typename T> bool operator== (const T& a,         const future<T>& b) { return a       == b.get(); }
+    template <typename T> bool operator!= (const future<T>& a, const T& b)         { return a.get() != b; }
+    template <typename T> bool operator!= (const T& a,         const future<T>& b) { return a       != b.get(); }
+    template <typename T> bool operator<= (const future<T>& a, const T& b)         { return a.get() <= b; }
+    template <typename T> bool operator<= (const T& a,         const future<T>& b) { return a       <= b.get(); }
+    template <typename T> bool operator>= (const future<T>& a, const T& b)         { return a.get() >= b; }
+    template <typename T> bool operator>= (const T& a,         const future<T>& b) { return a       >= b.get(); }
+    template <typename T> bool operator<  (const future<T>& a, const T& b)         { return a.get() <  b; }
+    template <typename T> bool operator<  (const T& a,         const future<T>& b) { return a       <  b.get(); }
+    template <typename T> bool operator>  (const future<T>& a, const T& b)         { return a.get() >  b; }
+    template <typename T> bool operator>  (const T& a,         const future<T>& b) { return a       >  b.get(); }
 
 // ----------------------------------------------------------------------------------------
 
diff --git a/dlib/threads/thread_pool_extension_abstract.h b/dlib/threads/thread_pool_extension_abstract.h
index ff6da1ba..46c2367d 100644
--- a/dlib/threads/thread_pool_extension_abstract.h
+++ b/dlib/threads/thread_pool_extension_abstract.h
@@ -190,17 +190,17 @@ namespace dlib
     template <typename T> bool operator>  (const future<T>& a, const future<T>& b) { return a.get() >  b.get(); }
 
     template <typename T> bool operator== (const future<T>& a, const T& b)         { return a.get() == b; }
-    template <typename T> bool operator== (const T& a,         const future<T>& b) { return a.get() == b; }
+    template <typename T> bool operator== (const T& a,         const future<T>& b) { return a       == b.get(); }
     template <typename T> bool operator!= (const future<T>& a, const T& b)         { return a.get() != b; }
-    template <typename T> bool operator!= (const T& a,         const future<T>& b) { return a.get() != b; }
+    template <typename T> bool operator!= (const T& a,         const future<T>& b) { return a       != b.get(); }
     template <typename T> bool operator<= (const future<T>& a, const T& b)         { return a.get() <= b; }
-    template <typename T> bool operator<= (const T& a,         const future<T>& b) { return a.get() <= b; }
+    template <typename T> bool operator<= (const T& a,         const future<T>& b) { return a       <= b.get(); }
     template <typename T> bool operator>= (const future<T>& a, const T& b)         { return a.get() >= b; }
-    template <typename T> bool operator>= (const T& a,         const future<T>& b) { return a.get() >= b; }
+    template <typename T> bool operator>= (const T& a,         const future<T>& b) { return a       >= b.get(); }
     template <typename T> bool operator<  (const future<T>& a, const T& b)         { return a.get() <  b; }
-    template <typename T> bool operator<  (const T& a,         const future<T>& b) { return a.get() <  b; }
+    template <typename T> bool operator<  (const T& a,         const future<T>& b) { return a       <  b.get(); }
     template <typename T> bool operator>  (const future<T>& a, const T& b)         { return a.get() >  b; }
-    template <typename T> bool operator>  (const T& a,         const future<T>& b) { return a.get() >  b; }
+    template <typename T> bool operator>  (const T& a,         const future<T>& b) { return a       >  b.get(); }
 
 // ----------------------------------------------------------------------------------------
 
-- 
2.18.0