From 09724ac86018486324a9e19811dee7a3111c659b Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 6 Dec 2017 14:57:28 -0500
Subject: [PATCH] hashtable: Avoid use of std::unary_function

It is removed by C++17.  It only defines some typedef members for
derived functionals.  We don't use those, so just drop it.
---
 hash_map.hxx.in  |  2 +-
 hash_set.hxx.in  |  2 +-
 hashtable.hxx.in | 13 ++++++-------
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/hash_map.hxx.in b/hash_map.hxx.in
index 3f9174f3..8c9b81e1 100644
--- a/hash_map.hxx.in
+++ b/hash_map.hxx.in
@@ -49,7 +49,7 @@ namespace @KWSYS_NAMESPACE@ {
 
 // select1st is an extension: it is not part of the standard.
 template <class T1, class T2>
-struct hash_select1st : public std::unary_function<std::pair<T1, T2>, T1>
+struct hash_select1st
 {
   const T1& operator()(const std::pair<T1, T2>& __x) const
   {
diff --git a/hash_set.hxx.in b/hash_set.hxx.in
index e3a0c6c4..5edd367a 100644
--- a/hash_set.hxx.in
+++ b/hash_set.hxx.in
@@ -49,7 +49,7 @@ namespace @KWSYS_NAMESPACE@ {
 
 // identity is an extension: it is not part of the standard.
 template <class _Tp>
-struct _Identity : public std::unary_function<_Tp, _Tp>
+struct _Identity
 {
   const _Tp& operator()(const _Tp& __x) const { return __x; }
 };
diff --git a/hashtable.hxx.in b/hashtable.hxx.in
index dd92cb9d..e962f17a 100644
--- a/hashtable.hxx.in
+++ b/hashtable.hxx.in
@@ -35,13 +35,12 @@
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 
-#include <algorithm>  // lower_bound
-#include <functional> // unary_function
-#include <iterator>   // iterator_traits
-#include <memory>     // allocator
-#include <stddef.h>   // size_t
-#include <utility>    // pair
-#include <vector>     // vector
+#include <algorithm> // lower_bound
+#include <iterator>  // iterator_traits
+#include <memory>    // allocator
+#include <stddef.h>  // size_t
+#include <utility>   // pair
+#include <vector>    // vector
 
 #if defined(_MSC_VER)
 #pragma warning(push)
-- 
GitLab