From 364839ab142e5d6e4efc89953e0911267d7c5502 Mon Sep 17 00:00:00 2001 From: Krystian Kuzniarek Date: Tue, 13 Aug 2019 23:59:59 +0200 Subject: remove a custom implementation of std::remove_const --- googlemock/include/gmock/gmock-matchers.h | 37 +++++++++++----------- .../include/gmock/internal/gmock-internal-utils.h | 10 +++--- 2 files changed, 24 insertions(+), 23 deletions(-) (limited to 'googlemock/include/gmock') diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h index 70750827..7185390e 100644 --- a/googlemock/include/gmock/gmock-matchers.h +++ b/googlemock/include/gmock/gmock-matchers.h @@ -1610,8 +1610,9 @@ class PointeeMatcher { template class Impl : public MatcherInterface { public: - typedef typename PointeeOf::type Pointee; + typedef + typename PointeeOf::type>::type Pointee; explicit Impl(const InnerMatcher& matcher) : matcher_(MatcherCast(matcher)) {} @@ -1749,8 +1750,8 @@ class FieldMatcher { // FIXME: The dispatch on std::is_pointer was introduced as a workaround for // a compiler bug, and can now be removed. return MatchAndExplainImpl( - typename std::is_pointer::type(), value, - listener); + typename std::is_pointer::type>::type(), + value, listener); } private: @@ -1816,8 +1817,8 @@ class PropertyMatcher { template bool MatchAndExplain(const T&value, MatchResultListener* listener) const { return MatchAndExplainImpl( - typename std::is_pointer::type(), value, - listener); + typename std::is_pointer::type>::type(), + value, listener); } private: @@ -2093,9 +2094,8 @@ class ContainerEqMatcher { template bool MatchAndExplain(const LhsContainer& lhs, MatchResultListener* listener) const { - // GTEST_REMOVE_CONST_() is needed to work around an MSVC 8.0 bug - // that causes LhsContainer to be a const type sometimes. - typedef internal::StlContainerView + typedef internal::StlContainerView< + typename std::remove_const::type> LhsView; typedef typename LhsView::type LhsStlContainer; StlContainerReference lhs_stl_container = LhsView::ConstReference(lhs); @@ -4034,12 +4034,12 @@ BeginEndDistanceIs(const DistanceMatcher& distance_matcher) { // values that are included in one container but not the other. (Duplicate // values and order differences are not explained.) template -inline PolymorphicMatcher > - ContainerEq(const Container& rhs) { +inline PolymorphicMatcher::type>> +ContainerEq(const Container& rhs) { // This following line is for working around a bug in MSVC 8.0, // which causes Container to be a const type sometimes. - typedef GTEST_REMOVE_CONST_(Container) RawContainer; + typedef typename std::remove_const::type RawContainer; return MakePolymorphicMatcher( internal::ContainerEqMatcher(rhs)); } @@ -4072,12 +4072,12 @@ WhenSorted(const ContainerMatcher& container_matcher) { // LHS container and the RHS container respectively. template inline internal::PointwiseMatcher + typename std::remove_const::type> Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) { // This following line is for working around a bug in MSVC 8.0, // which causes Container to be a const type sometimes (e.g. when // rhs is a const int[]).. - typedef GTEST_REMOVE_CONST_(Container) RawContainer; + typedef typename std::remove_const::type RawContainer; return internal::PointwiseMatcher( tuple_matcher, rhs); } @@ -4105,14 +4105,15 @@ inline internal::PointwiseMatcher > Pointwise( template inline internal::UnorderedElementsAreArrayMatcher< typename internal::BoundSecondMatcher< - Tuple2Matcher, typename internal::StlContainerView::type::value_type> > + Tuple2Matcher, + typename internal::StlContainerView< + typename std::remove_const::type>::type::value_type>> UnorderedPointwise(const Tuple2Matcher& tuple2_matcher, const RhsContainer& rhs_container) { // This following line is for working around a bug in MSVC 8.0, // which causes RhsContainer to be a const type sometimes (e.g. when // rhs_container is a const int[]). - typedef GTEST_REMOVE_CONST_(RhsContainer) RawRhsContainer; + typedef typename std::remove_const::type RawRhsContainer; // RhsView allows the same code to handle RhsContainer being a // STL-style container and it being a native C-style array. diff --git a/googlemock/include/gmock/internal/gmock-internal-utils.h b/googlemock/include/gmock/internal/gmock-internal-utils.h index ee004790..4d754836 100644 --- a/googlemock/include/gmock/internal/gmock-internal-utils.h +++ b/googlemock/include/gmock/internal/gmock-internal-utils.h @@ -429,8 +429,8 @@ class StlContainerView { static const_reference ConstReference(const RawContainer& container) { // Ensures that RawContainer is not a const type. - testing::StaticAssertTypeEq(); + testing::StaticAssertTypeEq< + RawContainer, typename std::remove_const::type>(); return container; } static type Copy(const RawContainer& container) { return container; } @@ -440,7 +440,7 @@ class StlContainerView { template class StlContainerView { public: - typedef GTEST_REMOVE_CONST_(Element) RawElement; + typedef typename std::remove_const::type RawElement; typedef internal::NativeArray type; // NativeArray can represent a native array either by value or by // reference (selected by a constructor argument), so 'const type' @@ -464,8 +464,8 @@ class StlContainerView { template class StlContainerView< ::std::tuple > { public: - typedef GTEST_REMOVE_CONST_( - typename internal::PointeeOf::type) RawElement; + typedef typename std::remove_const< + typename internal::PointeeOf::type>::type RawElement; typedef internal::NativeArray type; typedef const type const_reference; -- cgit v1.2.3