diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html
index ec8f4d13..b4dacaa5 100644
--- a/doc/html/boost_config/boost_macro_reference.html
+++ b/doc/html/boost_config/boost_macro_reference.html
@@ -1539,7 +1539,7 @@
The C++ implementation provides the (SGI) hash_set and hash_map
classes. When defined, BOOST_HASH_SET_HEADER
- and BOOST_HASH_LIST_HEADER
+ and BOOST_HASH_MAP_HEADER
will contain the names of the header needed to access hash_set
and hash_map; BOOST_STD_EXTENSION_NAMESPACE
will provide the namespace in which the two class templates reside.
diff --git a/doc/html/index.html b/doc/html/index.html
index 08adedc6..6ba3727c 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -990,7 +990,7 @@
-Last revised: July 27, 2020 at 17:18:39 GMT |
+Last revised: December 18, 2020 at 10:47:00 GMT |
|
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index 83c9ed79..c3cf8384 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -367,7 +367,7 @@ The platform has the POSIX API `gettimeofday`.
]]
[[`BOOST_HAS_HASH`][Standard library][
The C++ implementation provides the (SGI) hash_set and hash_map classes.
-When defined, `BOOST_HASH_SET_HEADER` and `BOOST_HASH_LIST_HEADER` will contain
+When defined, `BOOST_HASH_SET_HEADER` and `BOOST_HASH_MAP_HEADER` will contain
the names of the header needed to access hash_set and hash_map;
`BOOST_STD_EXTENSION_NAMESPACE` will provide the namespace in which the two
class templates reside.
diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp
index 068dc078..da384d23 100644
--- a/include/boost/config/stdlib/libstdcpp3.hpp
+++ b/include/boost/config/stdlib/libstdcpp3.hpp
@@ -94,6 +94,20 @@
#endif
#endif
+#if defined(__has_include)
+#if defined(BOOST_HAS_HASH)
+#if !__has_include(BOOST_HASH_SET_HEADER)
+#undef BOOST_HAS_HAS
+#undef BOOST_HAS_SET_HEADER
+#undef BOOST_HAS_MAP_HEADER
+#endif
+#if !__has_include(BOOST_SLIST_HEADER)
+#undef BOOST_HAS_SLIST
+#undef BOOST_HAS_SLIST_HEADER
+#endif
+#endif
+#endif
+
//
// Decide whether we have C++11 support turned on:
//
diff --git a/test/boost_has_hash.ipp b/test/boost_has_hash.ipp
index 0363940d..45ac40fa 100644
--- a/test/boost_has_hash.ipp
+++ b/test/boost_has_hash.ipp
@@ -10,23 +10,8 @@
// DESCRIPTION: The C++ implementation provides the (SGI) hash_set
// or hash_map classes.
-#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
-# ifdef BOOST_NO_CXX11_STD_UNORDERED
-# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
-# define _BACKWARD_BACKWARD_WARNING_H 1 /* turn off warnings from the headers below */
-# include
-# include
-# else
- // If we have BOOST_NO_CXX11_STD_UNORDERED *not* defined, then we must
- // not include the headers as they clash with the C++0x
- // headers. ie in any given translation unit we can include one
- // or the other, but not both.
-# define DISABLE_BOOST_HAS_HASH_TEST
-# endif
-#else
-#include
-#include
-#endif
+#include BOOST_HASH_SET_HEADER
+#include BOOST_HASH_MAP_HEADER
#ifndef BOOST_STD_EXTENSION_NAMESPACE
#define BOOST_STD_EXTENSION_NAMESPACE std