Index: base/template_util.h |
diff --git a/base/template_util.h b/base/template_util.h |
index 80a24d1722e2c466e31d2e09f483a4a73a45e90b..42552107cfbc148758c4d2e5ed5caa0078f25507 100644 |
--- a/base/template_util.h |
+++ b/base/template_util.h |
@@ -24,13 +24,15 @@ |
#endif |
// Some versions of libstdc++ have partial support for type_traits, but misses |
-// a smaller subset while removing some of the older non-standard stuff. |
-#define CR_GLIBCXX_4_8_4 20141219 |
-#define CR_GLIBCXX_4_9_2 20150426 |
+// a smaller subset while removing some of the older non-standard stuff. Assume |
+// that all versions below 5.0 fall in this category, along with one 5.0 |
+// experimental release. Test for this by consulting compiler major version, |
+// the only reliable option available, so theoretically this could fail should |
+// you attempt to mix an earlier version of libstdc++ with >= GCC5. But |
+// that's unlikely to work out, especially as GCC5 changed ABI. |
#define CR_GLIBCXX_5_0_0 20150123 |
-#if defined(__GLIBCXX__) && \ |
- (__GLIBCXX__ == CR_GLIBCXX_4_8_4 || __GLIBCXX__ == CR_GLIBCXX_4_9_2 || \ |
- __GLIBCXX__ == CR_GLIBCXX_5_0_0) |
+#if (defined(__GNUC__) && __GNUC__ < 5) || \ |
+ (defined(__GLIBCXX__) && __GLIBCXX__ == CR_GLIBCXX_5_0_0) |
#define CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX |
#endif |