23 #ifdef USE_STD_NAMESPACE
24 #if (__cplusplus >= 201103L) || defined(_MSC_VER) // Visual Studio
25 #include <unordered_map>
26 #include <unordered_set>
27 #define hash_map std::unordered_map
28 #if (_MSC_VER >= 1500 && _MSC_VER < 1600) // Visual Studio 2008
29 using namespace std::tr1;
34 #define SmartPtr std::unique_ptr
35 #define HAVE_UNIQUE_PTR
37 #elif (defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ > 0)) || \
38 __GNUC__ >= 4)) // gcc
40 #include <ext/hash_map>
41 #include <ext/hash_set>
42 using __gnu_cxx::hash_map;
43 using __gnu_cxx::hash_set;
44 #define unordered_map hash_map
45 #define unordered_set hash_set
51 #include <unordered_map>
52 #include <unordered_set>
53 #define hash_map std::unordered_map
54 #define unordered_set std::unordered_set
55 #else // USE_STD_NAMESPACE
58 #define unordered_map hash_map
59 #define unordered_set hash_set
60 #endif // USE_STD_NAMESPACE
62 #ifndef HAVE_UNIQUE_PTR
76 if (ptr_ != NULL)
delete ptr_;
88 #endif // HAVE_UNIQUE_PTR
bool operator==(const T *ptr) const