diff options
Diffstat (limited to 'src/tr1_hash_map.h')
| -rw-r--r-- | src/tr1_hash_map.h | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/src/tr1_hash_map.h b/src/tr1_hash_map.h index 1ff7c8e..f7813ae 100644 --- a/src/tr1_hash_map.h +++ b/src/tr1_hash_map.h @@ -3,20 +3,38 @@ // detection and fallback for unordered_map in C++0x #ifdef __cplusplus #ifdef __GNUC__ - #if __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 - #include <unordered_map> - #define tr1_hash_map std::unordered_map - #define tr1_hash_map_ismap 0 + #if __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 + #include <unordered_map> + #define tr1_hash_map std::unordered_map + #define tr1_hash_map_ismap 0 + #else + #include <map> + #define tr1_hash_map std::map + #define tr1_hash_map_ismap 1 + #endif #else #include <map> #define tr1_hash_map std::map #define tr1_hash_map_ismap 1 #endif - #else - #include <map> - #define tr1_hash_map std::map - #define tr1_hash_map_ismap 1 - #endif -#endif + // detect gcc 4.3 and use unordered map (part of c++0x) + // unordered map doesn't play nice with _GLIBCXX_DEBUG, just use a map if its enabled. + #if defined( __GNUC__ ) and not defined( _GLIBCXX_DEBUG ) + #if __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 + #include <unordered_map> + #define my_hash_map std::unordered_map + #else + #include <ext/hash_map> + namespace std { + using namespace __gnu_cxx; + } + #define my_hash_map std::hash_map + #endif + #else + #include <map> + #define my_hash_map std::map + #define USE_MAP + #endif +#endif |
