diff options
| -rw-r--r-- | googletest/include/gtest/internal/gtest-internal.h | 23 | ||||
| -rw-r--r-- | googletest/test/gtest-printers_test.cc | 1 | 
2 files changed, 19 insertions, 5 deletions
diff --git a/googletest/include/gtest/internal/gtest-internal.h b/googletest/include/gtest/internal/gtest-internal.h index 6e904a82..ffc22f92 100644 --- a/googletest/include/gtest/internal/gtest-internal.h +++ b/googletest/include/gtest/internal/gtest-internal.h @@ -933,19 +933,34 @@ struct IsHashTable {  template <typename T>  const bool IsHashTable<T>::value; +template<typename T> +struct VoidT { +    typedef void value_type; +}; + +template <typename T, typename = void> +struct HasValueType : false_type {}; +template <typename T> +struct HasValueType<T, VoidT<typename T::value_type> > : true_type { +}; +  template <typename C, -          bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)> +          bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer), +          bool = HasValueType<C>::value>  struct IsRecursiveContainerImpl; -template <typename C> -struct IsRecursiveContainerImpl<C, false> : public false_type {}; +template <typename C, bool HV> +struct IsRecursiveContainerImpl<C, false, HV> : public false_type {};  // Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to  // obey the same inconsistencies as the IsContainerTest, namely check if  // something is a container is relying on only const_iterator in C++11 and  // is relying on both const_iterator and iterator otherwise  template <typename C> -struct IsRecursiveContainerImpl<C, true> { +struct IsRecursiveContainerImpl<C, true, false> : public false_type {}; + +template <typename C> +struct IsRecursiveContainerImpl<C, true, true> {    #if GTEST_LANG_CXX11    typedef typename IteratorTraits<typename C::const_iterator>::value_type        value_type; diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index ccac35b4..4487978c 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -195,7 +195,6 @@ class PathLike {    struct iterator {      typedef PathLike value_type;    }; -  typedef iterator const_iterator;    PathLike() {}  | 
