// 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 <ext/hash_set>
-# include <ext/hash_map>
-# else
- // If we have BOOST_NO_CXX11_STD_UNORDERED *not* defined, then we must
- // not include the <ext/*> 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 <hash_set>
-#include <hash_map>
-#endif
+#include BOOST_HASH_SET_HEADER
+#include BOOST_HASH_MAP_HEADER
#ifndef BOOST_STD_EXTENSION_NAMESPACE
#define BOOST_STD_EXTENSION_NAMESPACE std
{
}
+template <class Key, class Eq, class Hash, class Alloc>
+void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<Key,Eq,Hash,Alloc>& )
+{
+}
+
template <class Key, class T, class Eq, class Hash, class Alloc>
void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>& )
{
{
#ifndef DISABLE_BOOST_HAS_HASH_TEST
BOOST_STD_EXTENSION_NAMESPACE::hash_set<int> hs;
+ hs.insert(2);
foo(hs);
BOOST_STD_EXTENSION_NAMESPACE::hash_map<int, long> hm;
+ hm[3] = 2;
foo(hm);
+ BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<int> hs2;
+ hs2.insert(2);
+ hs2.insert(2);
+ foo(hs2);
#endif
return 0;
}