diff --git a/hash_map.hxx.in b/hash_map.hxx.in
index 3f9174f3be7c8d2c06c64ca9f74330468ed35405..8c9b81e1b978254d19f829807ab50f129eb2f19d 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 e3a0c6c44901ee713ff7136a3dd49369b86cfca9..5edd367af728d742a44047586791a4487dd59b7c 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 dd92cb9d422adaec91f521bf12f513f13f50efb1..e962f17a99573db2430e61a31605d84a483d5f59 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)