#endif
#endif
+#if defined(__has_include)
+ #if !defined(HAVE_TYPE_TRAITS) && __has_include(<type_traits>)
+ #define HAVE_TYPE_TRAITS
+ #endif
+
+ #if !defined(HAVE_TR1_TYPE_TRAITS) && __has_include(<tr1/type_traits>)
+ #define HAVE_TR1_TYPE_TRAITS
+ #endif
+
+ #if !defined(HAVE_STD_UNORDERED_MAP) && __has_include(<unordered_map>)
+ #define HAVE_STD_UNORDERED_MAP
+ #endif
+
+ #if !defined(HAVE_TR1_UNORDERED_MAP) && __has_include(<tr1/unordered_map>)
+ #define HAVE_TR1_UNORDERED_MAP
+ #endif
+
+ #if !defined(HAVE_STD_UNORDERED_SET) && __has_include(<unordered_set>)
+ #define HAVE_STD_UNORDERED_SET
+ #endif
+
+ #if !defined(HAVE_TR1_UNORDERED_SET) && __has_include(<tr1/unordered_set>)
+ #define HAVE_TR1_UNORDERED_SET
+ #endif
+#endif // defined(__has_include)
+
/* provide replacement for C99 va_copy() if the compiler doesn't have it */
/* could be already defined by configure or the user */