lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [5805] Add relational operators for class minmax


From: Greg Chicares
Subject: [lmi-commits] [5805] Add relational operators for class minmax
Date: Fri, 25 Oct 2013 23:15:26 +0000

Revision: 5805
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5805
Author:   chicares
Date:     2013-10-25 23:15:25 +0000 (Fri, 25 Oct 2013)
Log Message:
-----------
Add relational operators for class minmax

Modified Paths:
--------------
    lmi/trunk/miscellany.hpp

Modified: lmi/trunk/miscellany.hpp
===================================================================
--- lmi/trunk/miscellany.hpp    2013-10-25 22:17:15 UTC (rev 5804)
+++ lmi/trunk/miscellany.hpp    2013-10-25 23:15:25 UTC (rev 5805)
@@ -30,10 +30,11 @@
 
 #include <algorithm>
 #include <cctype>
-#include <climits>  // UCHAR_MAX
-#include <cstddef>  // std::size_t
+#include <climits>                      // UCHAR_MAX
+#include <cstddef>                      // std::size_t
+#include <cstdio>                       // EOF
 #include <ios>
-#include <iterator> // std::distance()
+#include <iterator>                     // std::distance()
 #include <string>
 #include <utility>
 #include <vector>
@@ -52,6 +53,8 @@
 
 /// Ascertain vector minimum and maximum efficiently.
 ///
+/// Heterogeneous relational operators are necessarily free functions.
+///
 /// Implicitly-declared special member functions do the right thing.
 
 template<typename T>
@@ -68,14 +71,19 @@
         maximum_ = *extrema.second;
         }
 
-    T minimum() {return minimum_;}
-    T maximum() {return maximum_;}
+    T minimum() const {return minimum_;}
+    T maximum() const {return maximum_;}
 
   private:
     T minimum_;
     T maximum_;
 };
 
+template<typename T> bool operator< (T t, minmax<T> m) {return t <  
m.minimum();}
+template<typename T> bool operator<=(T t, minmax<T> m) {return t <= 
m.minimum();}
+template<typename T> bool operator< (minmax<T> m, T t) {return m.maximum() <  
t;}
+template<typename T> bool operator<=(minmax<T> m, T t) {return m.maximum() <= 
t;}
+
 std::string htmlize(std::string const&);
 
 inline std::ios_base::openmode ios_in_binary()




reply via email to

[Prev in Thread] Current Thread [Next in Thread]