aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorvladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925>2011-06-13 19:00:37 +0000
committervladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925>2011-06-13 19:00:37 +0000
commitcc265df8b44e613ca118ce5da145f91d66f6c440 (patch)
tree800a32dcfa5f87dcd0d6735b57d1c72e14305d5f /include
parent7e29bb7f7ebc2a1734415cb64395d87fc87d12be (diff)
downloadgoogletest-cc265df8b44e613ca118ce5da145f91d66f6c440.tar.gz
googletest-cc265df8b44e613ca118ce5da145f91d66f6c440.tar.bz2
googletest-cc265df8b44e613ca118ce5da145f91d66f6c440.zip
Fixes broken build on VC++ 7.1.
Diffstat (limited to 'include')
-rw-r--r--include/gtest/gtest-printers.h5
-rw-r--r--include/gtest/internal/gtest-internal.h10
2 files changed, 14 insertions, 1 deletions
diff --git a/include/gtest/gtest-printers.h b/include/gtest/gtest-printers.h
index 9cbab3ff..55d44fa1 100644
--- a/include/gtest/gtest-printers.h
+++ b/include/gtest/gtest-printers.h
@@ -694,7 +694,10 @@ inline void UniversalTersePrint(char* str, ::std::ostream* os) {
// NUL-terminated string.
template <typename T>
void UniversalPrint(const T& value, ::std::ostream* os) {
- UniversalPrinter<T>::Print(value, os);
+ // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
+ // UniversalPrinter with T directly.
+ typedef T T1;
+ UniversalPrinter<T1>::Print(value, os);
}
#if GTEST_HAS_TR1_TUPLE
diff --git a/include/gtest/internal/gtest-internal.h b/include/gtest/internal/gtest-internal.h
index d0fe5f79..d8834500 100644
--- a/include/gtest/internal/gtest-internal.h
+++ b/include/gtest/internal/gtest-internal.h
@@ -802,6 +802,16 @@ struct RemoveConst<const T[N]> {
typedef typename RemoveConst<T>::type type[N];
};
+#if defined(_MSC_VER) && _MSC_VER < 1400
+// This is the only specialization that allows VC++ 7.1 to remove const in
+// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC
+// and thus needs to be conditionally compiled.
+template <typename T, size_t N>
+struct RemoveConst<T[N]> {
+ typedef typename RemoveConst<T>::type type[N];
+};
+#endif
+
// A handy wrapper around RemoveConst that works when the argument
// T depends on template parameters.
#define GTEST_REMOVE_CONST_(T) \