From a3c2e107aeb7e821b76164cea366094ce420b656 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Fri, 16 Mar 2018 15:56:31 -0400 Subject: [PATCH] cl 189032107, again --- .../include/gtest/internal/gtest-internal.h | 23 +++++++++++++++---- 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 const bool IsHashTable::value; +template +struct VoidT { + typedef void value_type; +}; + +template +struct HasValueType : false_type {}; +template +struct HasValueType > : true_type { +}; + template (0)) == sizeof(IsContainer)> + bool = sizeof(IsContainerTest(0)) == sizeof(IsContainer), + bool = HasValueType::value> struct IsRecursiveContainerImpl; -template -struct IsRecursiveContainerImpl : public false_type {}; +template +struct IsRecursiveContainerImpl : 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 -struct IsRecursiveContainerImpl { +struct IsRecursiveContainerImpl : public false_type {}; + +template +struct IsRecursiveContainerImpl { #if GTEST_LANG_CXX11 typedef typename IteratorTraits::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() {}