clang/gcc: Use STL hash function for int64_t and uint64_t
This patch changes the guards for the definition of hash functions to also exclude the int64_t and uint64_t hash functions in the case we are using the c++0x STL <unordered_map> (and <hash>) or the TR1 version of the same header. Previously the guard only covered the hash function for strings, but it seems there is also no need to define a hash for the 64-bit integer types, and this has caused problems with builds on 32-bit Ubuntu.
This commit is contained in:
parent
312b6fe43b
commit
79750fc575
1 changed files with 8 additions and 5 deletions
|
@ -95,8 +95,9 @@
|
|||
#define hash_set unordered_set
|
||||
#define hash_multiset unordered_multiset
|
||||
|
||||
// these versions also have an existing hash function for strings
|
||||
#define HAVE_STRING_HASH 1
|
||||
// these versions also have an existing hash function for strings and
|
||||
// 64-bit integer types
|
||||
#define HAVE_HASH_FUNCTIONS 1
|
||||
|
||||
#if HAVE_STD_UNORDERED_MAP
|
||||
|
||||
|
@ -152,6 +153,11 @@ namespace m5 {
|
|||
//
|
||||
|
||||
__hash_namespace_begin
|
||||
|
||||
// if the hash functions for 64-bit integer types and strings are not
|
||||
// already available, then declare them here
|
||||
#if !defined(HAVE_HASH_FUNCTIONS)
|
||||
|
||||
#if !defined(__LP64__) && !defined(__alpha__) && !defined(__SUNPRO_CC)
|
||||
template<>
|
||||
struct hash<uint64_t> {
|
||||
|
@ -168,9 +174,6 @@ __hash_namespace_begin
|
|||
};
|
||||
#endif
|
||||
|
||||
// if the hash functions for strings are not already defined, then
|
||||
// declare them here
|
||||
#if !defined(HAVE_STRING_HASH)
|
||||
template<>
|
||||
struct hash<std::string> {
|
||||
size_t operator()(const std::string &s) const {
|
||||
|
|
Loading…
Reference in a new issue