From 4267679b6887f349f17b01ccd70c9e3483689b25 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 17 Sep 2026 10:21:28 -0700 Subject: [PATCH] Fix the compilation of the matcher UnorderedElementsAre when used with a native pointer and size PiperOrigin-RevId: 983276604 Change-Id: I76ee9771bae7b0801e6aa74c0786bf5809b43226 --- googlemock/include/gmock/gmock-matchers.h | 3 ++- googlemock/test/gmock-matchers-containers_test.cc | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h index 14696bc02..5f5855f36 100644 --- a/googlemock/include/gmock/gmock-matchers.h +++ b/googlemock/include/gmock/gmock-matchers.h @@ -4150,7 +4150,8 @@ class [[nodiscard]] UnorderedElementsAreMatcher { template operator Matcher() const { typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer; - typedef typename internal::RangeTraits::value_type Element; + typedef typename internal::StlContainerView::type View; + typedef typename internal::RangeTraits::value_type Element; typedef ::std::vector> MatcherVec; MatcherVec matchers; matchers.reserve(::std::tuple_size::value); diff --git a/googlemock/test/gmock-matchers-containers_test.cc b/googlemock/test/gmock-matchers-containers_test.cc index e7969a0cc..bf3ec17ed 100644 --- a/googlemock/test/gmock-matchers-containers_test.cc +++ b/googlemock/test/gmock-matchers-containers_test.cc @@ -2288,6 +2288,13 @@ TEST_F(UnorderedElementsAreTest, WorksWithUncopyable) { UnorderedElementsAre(Truly(ValueIsPositive), UncopyableIs(-3))); } +TEST_F(UnorderedElementsAreTest, WorksWithNativeArrayPassedAsPointerAndSize) { + int array[] = {0, 1}; + ::std::tuple array_as_tuple(array, 2); + EXPECT_THAT(array_as_tuple, UnorderedElementsAre(1, 0)); + EXPECT_THAT(array_as_tuple, Not(UnorderedElementsAre(0))); +} + TEST_F(UnorderedElementsAreTest, SucceedsWhenExpected) { const int a[] = {1, 2, 3}; std::vector s(std::begin(a), std::end(a));